func()

in api/wikipediapageview/post_queries.go [72:113]


func (h *handler) buildQuery(req *postQueriesRequest) *bigquery.Query {
	var q *bigquery.Query

	cond := []string{"datehour >= @startDate", "datehour < @endDate"}

	if req.Wiki != "" {
		cond = append(cond, "wiki LIKE @wiki")
	}

	if req.TitleLike != "" {
		cond = append(cond, "title LIKE @titleLike")
	}

	if req.GroupBy == "title" {
		q = h.Bigquery.Query(fmt.Sprintf(`SELECT
    title,
    SUM(views) AS views
FROM bigquery-public-data.wikipedia.pageviews_2020
WHERE %s
GROUP BY title
ORDER BY views %s
LIMIT 100`, strings.Join(cond, "\n    AND "), req.OrderBy))
	} else {
		q = h.Bigquery.Query(fmt.Sprintf(`SELECT
    DATE(datehour) AS date,
    SUM(views) AS views
FROM bigquery-public-data.wikipedia.pageviews_2020
WHERE %s
GROUP BY date
ORDER BY views %s
LIMIT 366`, strings.Join(cond, "\n    AND "), req.OrderBy))
	}

	q.Parameters = []bigquery.QueryParameter{
		{Name: "wiki", Value: "%" + req.Wiki + "%"},
		{Name: "titleLike", Value: "%" + req.TitleLike + "%"},
		{Name: "startDate", Value: req.StartDate},
		{Name: "endDate", Value: req.EndDate.AddDate(0, 0, 1)},
	}

	return q
}