Mercurial > gemma
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 } |