commit be11385bf74de34de66ceab44729e8840a2f5259
parent 7e9b1b8ee44b3f9ef6269e7e00d6b91b25b209ab
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Mon, 14 Oct 2024 10:35:30 -0700
Add /pointmaps endpoint
This endpoint returns all the pointmap types.
Diffstat:
3 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/cmd/api/floorplans.go b/cmd/api/floorplans.go
@@ -32,6 +32,19 @@ func (e *Env) FurnitureTypes(c *gin.Context) {
}
}
+func (e *Env) PointmapTypes(c *gin.Context) {
+ type resp struct {
+ Types []string `json:"types"`
+ }
+
+ types, err := e.backend.PointmapTypes()
+ if err != nil {
+ RespondError(c, 500, "Unable to get pointmap types: %s", err.Error())
+ } else {
+ Respond(c, 200, resp{ Types: types })
+ }
+}
+
func (e *Env) CreateFloorplan(c *gin.Context) {
var req SettableFloorplan
diff --git a/cmd/api/main.go b/cmd/api/main.go
@@ -98,6 +98,7 @@ func setRoutes(env *Env, r *gin.RouterGroup) {
r.GET("/settings", env.GetSettings)
r.GET("/services", env.GetServices)
r.GET("/furniture", env.FurnitureTypes)
+ r.GET("/pointmaps", env.PointmapTypes)
users := r.Group("/users")
users.GET("/:user", env.GetUser)
diff --git a/internal/backend/floorplan_data.go b/internal/backend/floorplan_data.go
@@ -198,6 +198,28 @@ func (e *Env) FurnitureTypes(tx *sql.Tx) (map[string]*FurnitureType, error) {
return data, nil
}
+func (e *Env) PointmapTypes() ([]string, error) {
+ r, err := e.DB.Query("SELECT name FROM spaceplanner.pointmap_types")
+ if err != nil {
+ return nil, err
+ }
+ defer r.Close()
+
+ a := make([]string, 0, 8)
+ for r.Next() {
+ var name string
+ if err := r.Scan(&name); err != nil {
+ return nil, err
+ }
+ a = append(a, name)
+ }
+ if err := r.Err(); err != nil {
+ return nil, err
+ }
+
+ return a, nil
+}
+
func (e *Env) GetFloorplanData(tx *sql.Tx, user string, floorplan ObjectID) (FloorplanData, error) {
var data FloorplanData
var err error