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)
}