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