view 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 source

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
}