feat(colors): Add a route which lists all available controllers with their metadata

This commit is contained in:
Siesta
2025-07-28 21:36:06 +02:00
parent 9453fab912
commit b50a62a52d
3 changed files with 35 additions and 6 deletions
+20 -1
View File
@@ -15,7 +15,7 @@ func CreateController() (int64, error) {
logger.DBLogger.Printf("Error creating controller: %v", err)
return 0, err
}
id, err := result.LastInsertId()
if err != nil {
logger.DBLogger.Printf("Error fetching controller ID: %v", err)
@@ -70,6 +70,25 @@ func ControllerExists(id int) bool {
return count > 0
}
func GetAllColors() ([]models.LampState, error) {
rows, err := DB.Query("SELECT id, color, updated_at FROM controllers WHERE id > 0")
if err != nil {
return nil, err
}
defer rows.Close()
var controllers []models.LampState
for rows.Next() {
var state models.LampState
if err := rows.Scan(&state.ID, &state.Color, &state.UpdatedAt); err != nil {
return nil, err
}
controllers = append(controllers, state)
}
return controllers, nil
}
func ViewColor(id int) (*models.LampState, error) {
row := DB.QueryRow("SELECT id, color, updated_at FROM controllers WHERE id = ?", id)
+10 -1
View File
@@ -14,9 +14,18 @@ import (
)
func RegisterColorRoutes(mux *http.ServeMux) {
mux.HandleFunc("GET /api/v1/colors/", middleware.WithAdminAuth(listColors))
mux.HandleFunc("GET /api/v1/colors/{ID}", middleware.WithAdminAuth(getCurrent))
mux.HandleFunc("PUT /api/v1/colors/{ID}", middleware.WithAdminAuth(setCurrent))
// mux.HandleFunc("WS /api/v1/ws/colors/{ID}", setCurrentWebsocket)
}
func listColors(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
colors, err := db.GetAllColors()
if err != nil {
utils.ErrorResponse(w, http.StatusInternalServerError, err.Error())
}
utils.SuccessResponse(w, http.StatusOK, colors)
}
func getCurrent(w http.ResponseWriter, r *http.Request) {