comparison 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
comparison
equal deleted inserted replaced
811:9b982e50e938 812:98a7776100fb
1 package controllers
2
3 import (
4 "database/sql"
5 "net/http"
6
7 "gemma.intevation.de/gemma/pkg/models"
8 "github.com/gorilla/mux"
9 )
10
11 const (
12 listSurveysSQL = `SELECT s.bottleneck_id,
13 s.date_info::text
14 FROM waterway.bottlenecks b, waterway.sounding_results s
15 WHERE b.objnam=$1 AND s.bottleneck_id = b.bottleneck_id;`
16 )
17
18 func listSurveys(
19 _ interface{},
20 req *http.Request,
21 db *sql.Conn,
22 ) (jr JSONResult, err error) {
23
24 bottleneckName := mux.Vars(req)["bottleneck"]
25
26 var rows *sql.Rows
27
28 rows, err = db.QueryContext(req.Context(), listSurveysSQL, bottleneckName)
29 if err != nil {
30 return
31 }
32 defer rows.Close()
33
34 surveys := []models.Survey{}
35
36 for rows.Next() {
37 var survey models.Survey
38 if err = rows.Scan(
39 &survey.BottleneckId,
40 &survey.DateInfo,
41 ); err != nil {
42 return
43 }
44 surveys = append(surveys, survey)
45 }
46
47 jr = JSONResult{
48 Result: struct {
49 Surveys []models.Survey `json:"surveys"`
50 }{surveys},
51 }
52 return
53 }