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 // ------------------------------------------------------------------