api.spaceplanner.app

Spaceplanner API
git clone git://jacobedwards.org/api.spaceplanner.app
Log | Files | Refs

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:
Mcmd/api/floorplans.go | 13+++++++++++++
Mcmd/api/main.go | 1+
Minternal/backend/floorplan_data.go | 22++++++++++++++++++++++
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