func()

in metrics.go [112:142]


func (mh MetricsHandler) handleMetricsQuery(w http.ResponseWriter, r *http.Request) {
	if err := r.ParseForm(); err != nil {
		w.WriteHeader(http.StatusBadRequest)
		writeError(w, "error parsing params", err)
		return
	}
	log.Printf("Handling incoming request: %s", r.Form)

	if len(r.Form["repository"]) < 1 {
		w.WriteHeader(http.StatusBadRequest)
		writeError(w, "missing 'repository'", errors.New("need repository"))
		return
	}

	query := ExtractMetricQuery(r.Form)

	m := new(Metric)
	dbQuery := mh.db.Where(&query)
	if len(r.Form["until"]) > 0 {
		dbQuery = dbQuery.Where("timestamp <= ? ", r.Form["until"][0])
	}
	dbQuery.Order("timestamp desc").First(m)

	if m.ID == 0 {
		w.WriteHeader(http.StatusNotFound)
		writeError(w, "no rows found", errors.New("-"))
		return
	}

	respondWithMetric(w, *m)
}