Mercurial > gemma
changeset 2814:6f435a9558f2
Removed old longterm waterlevel statistics endpoint.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 26 Mar 2019 14:56:38 +0100 |
parents | 49c1570919ae |
children | 12f053763be2 |
files | pkg/controllers/gauges.go pkg/controllers/routes.go |
diffstat | 2 files changed, 0 insertions(+), 178 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/gauges.go Tue Mar 26 14:05:54 2019 +0100 +++ b/pkg/controllers/gauges.go Tue Mar 26 14:56:38 2019 +0100 @@ -106,25 +106,6 @@ AND measure_date BETWEEN $6 AND $7 ORDER BY measure_date ` - selectWaterlevelsMeasuredSQL = ` -SELECT - measure_date, - water_level -FROM waterway.gauge_measurements -WHERE - NOT predicted - AND fk_gauge_id = ( - $1::char(2), - $2::char(3), - $3::char(5), - $4::char(5), - $5::int - ) - AND measure_date BETWEEN - $6::timestamp with time zone AND - $7::timestamp with time zone -ORDER BY measure_date -` ) func float64format(v float64) string { @@ -369,162 +350,6 @@ } } -func averageWaterlevels(rw http.ResponseWriter, req *http.Request) { - gauge := mux.Vars(req)["gauge"] - - isrs, err := models.IsrsFromString(gauge) - if err != nil { - http.Error( - rw, fmt.Sprintf("error: Invalid ISRS code: %v", err), - http.StatusBadRequest) - return - } - - var from, to time.Time - - if t := req.FormValue("to"); t != "" { - var err error - if to, err = time.ParseInLocation(common.DateFormat, t, time.UTC); err != nil { - http.Error( - rw, fmt.Sprintf("error: bad from date: %v", err), - http.StatusBadRequest) - return - } - } else { - y, m, d := time.Now().Date() - to = time.Date(y, m, d, 0, 0, 0, 0, time.UTC) - } - - if f := req.FormValue("from"); f != "" { - var err error - if from, err = time.ParseInLocation(common.DateFormat, f, time.UTC); err != nil { - http.Error( - rw, fmt.Sprintf("error: bad from date: %v", err), - http.StatusBadRequest) - return - } - } else { - from = to.AddDate(-1, 0, 0) - } - - to = to.AddDate(0, 0, 1).Add(-time.Nanosecond) - - if to.Before(from) { - from, to = to, from - } - - conn := middleware.GetDBConn(req) - - ctx := req.Context() - - rows, err := conn.QueryContext( - ctx, - selectWaterlevelsMeasuredSQL, - isrs.CountryCode, - isrs.LoCode, - isrs.FairwaySection, - isrs.Orc, - isrs.Hectometre, - from, to, - ) - if err != nil { - http.Error( - rw, fmt.Sprintf("error: %v", err), - http.StatusInternalServerError) - return - } - defer rows.Close() - - rw.Header().Add("Content-Type", "text/csv") - - out := csv.NewWriter(rw) - - var last time.Time - var values []float64 - - record := []string{ - "#date", - "#min", - "#max", - "#mean", - "#median", - "#q25", - "#q75", - } - - if err := out.Write(record); err != nil { - log.Printf("error: %v\n", err) - // Too late for an HTTP error code. - return - } - - write := func() error { - if len(values) > 0 { - sort.Float64s(values) - // date - record[0] = last.Format(common.DateFormat) - // min - record[1] = float64format(values[0]) - // max - record[2] = float64format(values[len(values)-1]) - // mean - record[3] = float64format(stat.Mean(values, nil)) - // median - record[4] = float64format(values[len(values)/2]) - // Q25 - record[5] = float64format( - stat.Quantile(0.25, stat.Empirical, values, nil)) - // Q75 - record[6] = float64format( - stat.Quantile(0.75, stat.Empirical, values, nil)) - - err := out.Write(record) - values = values[:0] - return err - } - return nil - } - - for rows.Next() { - var ( - date time.Time - value float64 - ) - if err := rows.Scan(&date, &value); err != nil { - log.Printf("error: %v\n", err) - // Too late for an HTTP error code. - return - } - oy, om, od := last.Date() - ny, nm, nd := date.Date() - if oy != ny || om != nm || od != nd { - if err := write(); err != nil { - log.Printf("error: %v\n", err) - // Too late for an HTTP error code. - return - } - last = date - } else { - values = append(values, value) - } - } - write() - - if err := rows.Err(); err != nil { - log.Printf("error: %v", err) - // Too late for an HTTP error code. - return - } - - out.Flush() - if err := out.Error(); err != nil { - log.Printf("error: %v", err) - // Too late for an HTTP error code. - return - } - -} - func nashSutcliffe( _ interface{}, req *http.Request,
--- a/pkg/controllers/routes.go Tue Mar 26 14:05:54 2019 +0100 +++ b/pkg/controllers/routes.go Tue Mar 26 14:56:38 2019 +0100 @@ -302,9 +302,6 @@ api.Handle("/data/waterlevels/{gauge}", any( middleware.DBConn(http.HandlerFunc(waterlevels)))).Methods(http.MethodGet) - api.Handle("/data/average-waterlevels/{gauge}", any( - middleware.DBConn(http.HandlerFunc(averageWaterlevels)))).Methods(http.MethodGet) - api.Handle("/data/longterm-waterlevels/{gauge}", any( middleware.DBConn(http.HandlerFunc(longtermWaterlevels)))).Methods(http.MethodGet)