gis/server/datasets/index.go

46 lines
949 B
Go

package datasets
import (
"encoding/json"
"gis/app"
"net/http"
)
func listDatasetsRoute(application *app.App) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
rows, err := application.Db.Query(application.Ctx, "select id, name from datasets")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
defer rows.Close()
datasets := make([]Dataset, 0)
for rows.Next() {
var dataset Dataset
if err := rows.Scan(&dataset.ID, &dataset.Name); err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
datasets = append(datasets, dataset)
}
if err := rows.Err(); err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
err = json.NewEncoder(w).Encode(map[string][]Dataset{"data": datasets})
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
}
}