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)