From 83ab71f84552ecae757c8dac9571f798d90a9084 Mon Sep 17 00:00:00 2001 From: Fritz Heiden Date: Mon, 14 Apr 2025 23:34:59 +0200 Subject: [PATCH] feat: add get remote api endpoint --- data/remote_database.go | 16 ++++++++++++++++ management/remote_manager.go | 8 ++++++++ server/remote_api_handler.go | 13 +++++++++++++ www/src/components/list-manager.jsx | 4 ---- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/data/remote_database.go b/data/remote_database.go index 0b676fe..e9ec32e 100644 --- a/data/remote_database.go +++ b/data/remote_database.go @@ -97,6 +97,22 @@ func (db *RemoteDatabase) CreateRemoteCommands(remoteId string, commandIds []str return nil } +func (db *RemoteDatabase) GetRemote(remoteId string) (Remote, error) { + var remote Remote + queryString := "SELECT id, title FROM Remotes WHERE id = ?" + row := db.Connection.QueryRow(queryString, remoteId) + error := row.Scan(&remote.Id, &remote.Title) + if error != nil { + return Remote{}, fmt.Errorf("error scanning remote: %s", error) + } + commands, error := db.GetCommandsByRemoteId(remoteId) + if error != nil { + return Remote{}, error + } + remote.Commands = commands + return remote, nil +} + func (db *RemoteDatabase) GetRemotes() ([]Remote, error) { rows, error := db.Connection.Query("SELECT id, title FROM Remotes") if error != nil { diff --git a/management/remote_manager.go b/management/remote_manager.go index 4fb8919..1632ffe 100644 --- a/management/remote_manager.go +++ b/management/remote_manager.go @@ -17,6 +17,14 @@ func (rm *RemoteManager) CreateRemote(remote d.Remote) (string, error) { return rm.remoteDatabase.CreateRemote(remote) } +func (rm *RemoteManager) GetRemote(remoteID string) (d.Remote, error) { + remote, err := rm.remoteDatabase.GetRemote(remoteID) + if err != nil { + return d.Remote{}, err + } + return remote, nil +} + func (rm *RemoteManager) GetRemotes() ([]d.Remote, error) { remotes, err := rm.remoteDatabase.GetRemotes() if err != nil { diff --git a/server/remote_api_handler.go b/server/remote_api_handler.go index 14c4456..c0991e0 100644 --- a/server/remote_api_handler.go +++ b/server/remote_api_handler.go @@ -5,6 +5,7 @@ import ( m "playback-device-server/management" "github.com/labstack/echo/v4" + "github.com/rs/zerolog/log" ) type RemoteApiHandler struct { @@ -16,6 +17,7 @@ func (r *RemoteApiHandler) Initialize(authenticator *Authenticator) { r.router.Use(authenticator.Authenticate("/api/remotes", []string{})) remotesApi := r.router.Group("/api/remotes") remotesApi.GET("", r.handleGetRemotes) + remotesApi.GET("/:id", r.handleGetRemote) remotesApi.POST("", r.handleCreateRemote) remotesApi.DELETE("/:id", r.handleDelteRemote) @@ -42,6 +44,17 @@ func (r *RemoteApiHandler) handleCreateRemote(context echo.Context) error { return context.JSON(200, remote) } +func (r *RemoteApiHandler) handleGetRemote(context echo.Context) error { + id := context.Param("id") + remote, err := r.remoteManager.GetRemote(id) + if err != nil { + SendError(500, context, err.Error()) + log.Error().Err(err) + return err + } + return context.JSON(200, remote) +} + func (r *RemoteApiHandler) handleGetRemotes(context echo.Context) error { remotes, err := r.remoteManager.GetRemotes() if err != nil { diff --git a/www/src/components/list-manager.jsx b/www/src/components/list-manager.jsx index 2d2de59..4549a05 100644 --- a/www/src/components/list-manager.jsx +++ b/www/src/components/list-manager.jsx @@ -36,10 +36,6 @@ function ListManager(props) { }) ); - createEffect(() => - console.log(availableItemsFuse().search(availableItemsSearchString())) - ); - const selectableAvailableItems = createMemo(() => (availableItemsSearchString() ? availableItemsFuse()