diff pkg/controllers/surveys.go @ 812:98a7776100fb

Added end point lo list available surveys for a given bottleneck.
author Sascha Wilde <wilde@intevation.de>
date Thu, 27 Sep 2018 17:25:03 +0200
parents
children a5452a001b46
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/controllers/surveys.go	Thu Sep 27 17:25:03 2018 +0200
@@ -0,0 +1,53 @@
+package controllers
+
+import (
+	"database/sql"
+	"net/http"
+
+	"gemma.intevation.de/gemma/pkg/models"
+	"github.com/gorilla/mux"
+)
+
+const (
+	listSurveysSQL = `SELECT s.bottleneck_id,
+                                 s.date_info::text
+FROM waterway.bottlenecks b, waterway.sounding_results s
+WHERE b.objnam=$1 AND s.bottleneck_id = b.bottleneck_id;`
+)
+
+func listSurveys(
+	_ interface{},
+	req *http.Request,
+	db *sql.Conn,
+) (jr JSONResult, err error) {
+
+	bottleneckName := mux.Vars(req)["bottleneck"]
+
+	var rows *sql.Rows
+
+	rows, err = db.QueryContext(req.Context(), listSurveysSQL, bottleneckName)
+	if err != nil {
+		return
+	}
+	defer rows.Close()
+
+	surveys := []models.Survey{}
+
+	for rows.Next() {
+		var survey models.Survey
+		if err = rows.Scan(
+			&survey.BottleneckId,
+			&survey.DateInfo,
+		); err != nil {
+			return
+		}
+		surveys = append(surveys, survey)
+	}
+
+	jr = JSONResult{
+		Result: struct {
+			Surveys []models.Survey `json:"surveys"`
+		}{surveys},
+	}
+	return
+}