Mercurial > gemma
view pkg/controllers/surveys.go @ 4420:2261462ddcdc
Map, Usermanagement: use encodeURIComponent
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Wed, 18 Sep 2019 15:21:09 +0200 |
parents | 4394daeea96a |
children | fc082c611b8b |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018, 2019 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha Wilde <sascha.wilde@intevation.de> // * Sascha L. Teichmann <sascha.teichmann@intevation.de> // * Bernhard Reiter <bernhard.reiter@intevation.de> package controllers import ( "database/sql" "net/http" "github.com/gorilla/mux" "gemma.intevation.de/gemma/pkg/models" mw "gemma.intevation.de/gemma/pkg/middleware" ) const ( listSurveysSQL = ` SELECT s.bottleneck_id, s.date_info::text, s.depth_reference, g.objname AS gauge_objname, r.value AS waterlevel_value FROM waterway.bottlenecks AS b JOIN waterway.sounding_results AS s ON b.bottleneck_id = s.bottleneck_id JOIN waterway.gauges AS g ON b.gauge_location = g.location AND s.date_info::timestamptz <@ g.validity LEFT JOIN waterway.gauges_reference_water_levels AS r ON s.depth_reference = r.depth_reference AND g.location = r.location AND g.validity = r.validity WHERE b.objnam = $1 AND s.date_info::timestamptz <@ b.validity` ) func listSurveys(req *http.Request) (jr mw.JSONResult, err error) { bottleneckName := mux.Vars(req)["bottleneck"] var rows *sql.Rows rows, err = mw.JSONConn(req).QueryContext(req.Context(), listSurveysSQL, bottleneckName) if err != nil { return } defer rows.Close() surveys := []*models.Survey{} // as we do not use the values here, we could simply the code here // to work without an explicit mdels/surverys.go // (like done in controllers/search.go) for rows.Next() { var survey models.Survey var level sql.NullInt64 if err = rows.Scan( &survey.BottleneckID, &survey.DateInfo, &survey.DepthReference, &survey.ReferenceGauge, &level, ); err != nil { return } if level.Valid { survey.WaterLevelValue = &level.Int64 } surveys = append(surveys, &survey) } if err = rows.Err(); err != nil { return } jr = mw.JSONResult{ Result: struct { Surveys []*models.Survey `json:"surveys"` }{surveys}, } return }