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 } } }