46 lines
949 B
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
|
|
}
|
|
}
|
|
}
|