From c359757e31ef57e094e1e90209c24a79e568f2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesko=20Ansch=C3=BCtz?= Date: Thu, 26 Mar 2026 23:05:18 +0100 Subject: [PATCH] =?UTF-8?q?feat(store):=20UpsertDisplayState=20f=C3=BCr=20?= =?UTF-8?q?screen=5Fstatus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/backend/internal/store/store.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/server/backend/internal/store/store.go b/server/backend/internal/store/store.go index 1d70f8e..a1fb64a 100644 --- a/server/backend/internal/store/store.go +++ b/server/backend/internal/store/store.go @@ -34,6 +34,12 @@ type Screen struct { CreatedAt time.Time `json:"created_at"` } +type ScreenStatus struct { + ScreenID string `json:"screen_id"` + DisplayState string `json:"display_state"` + ReportedAt time.Time `json:"reported_at"` +} + type MediaAsset struct { ID string `json:"id"` TenantID string `json:"tenant_id"` @@ -310,6 +316,18 @@ func scanScreen(row interface { return &sc, nil } +// UpsertDisplayState speichert den zuletzt gemeldeten Display-Zustand eines Screens. +func (s *ScreenStore) UpsertDisplayState(ctx context.Context, screenID, displayState string) error { + _, err := s.pool.Exec(ctx, + `insert into screen_status (screen_id, display_state, reported_at) + values ($1, $2, now()) + on conflict (screen_id) do update + set display_state = excluded.display_state, + reported_at = excluded.reported_at`, + screenID, displayState) + return err +} + // ------------------------------------------------------------------ // MediaStore // ------------------------------------------------------------------