feat(store): ScreenSchedule.OverrideOnUntil – Struct, Get, Upsert, ListEnabled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8f1abd977b
commit
be3a5f5aac
1 changed files with 16 additions and 14 deletions
|
|
@ -42,10 +42,11 @@ type ScreenStatus struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ScreenSchedule struct {
|
type ScreenSchedule struct {
|
||||||
ScreenID string `json:"screen_id"`
|
ScreenID string `json:"screen_id"`
|
||||||
ScheduleEnabled bool `json:"schedule_enabled"`
|
ScheduleEnabled bool `json:"schedule_enabled"`
|
||||||
PowerOnTime string `json:"power_on_time"`
|
PowerOnTime string `json:"power_on_time"`
|
||||||
PowerOffTime string `json:"power_off_time"`
|
PowerOffTime string `json:"power_off_time"`
|
||||||
|
OverrideOnUntil *time.Time `json:"override_on_until,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MediaAsset struct {
|
type MediaAsset struct {
|
||||||
|
|
@ -653,9 +654,9 @@ func scanPlaylistItem(row interface {
|
||||||
func (s *ScreenScheduleStore) Get(ctx context.Context, screenID string) (*ScreenSchedule, error) {
|
func (s *ScreenScheduleStore) Get(ctx context.Context, screenID string) (*ScreenSchedule, error) {
|
||||||
var sc ScreenSchedule
|
var sc ScreenSchedule
|
||||||
err := s.pool.QueryRow(ctx,
|
err := s.pool.QueryRow(ctx,
|
||||||
`select screen_id, schedule_enabled, power_on_time, power_off_time
|
`select screen_id, schedule_enabled, power_on_time, power_off_time, override_on_until
|
||||||
from screen_schedules where screen_id = $1`, screenID).
|
from screen_schedules where screen_id = $1`, screenID).
|
||||||
Scan(&sc.ScreenID, &sc.ScheduleEnabled, &sc.PowerOnTime, &sc.PowerOffTime)
|
Scan(&sc.ScreenID, &sc.ScheduleEnabled, &sc.PowerOnTime, &sc.PowerOffTime, &sc.OverrideOnUntil)
|
||||||
if errors.Is(err, pgx.ErrNoRows) {
|
if errors.Is(err, pgx.ErrNoRows) {
|
||||||
return &ScreenSchedule{ScreenID: screenID}, nil
|
return &ScreenSchedule{ScreenID: screenID}, nil
|
||||||
}
|
}
|
||||||
|
|
@ -668,20 +669,21 @@ func (s *ScreenScheduleStore) Get(ctx context.Context, screenID string) (*Screen
|
||||||
// Upsert speichert oder aktualisiert den Zeitplan eines Screens.
|
// Upsert speichert oder aktualisiert den Zeitplan eines Screens.
|
||||||
func (s *ScreenScheduleStore) Upsert(ctx context.Context, sc *ScreenSchedule) error {
|
func (s *ScreenScheduleStore) Upsert(ctx context.Context, sc *ScreenSchedule) error {
|
||||||
_, err := s.pool.Exec(ctx,
|
_, err := s.pool.Exec(ctx,
|
||||||
`insert into screen_schedules (screen_id, schedule_enabled, power_on_time, power_off_time)
|
`insert into screen_schedules (screen_id, schedule_enabled, power_on_time, power_off_time, override_on_until)
|
||||||
values ($1, $2, $3, $4)
|
values ($1, $2, $3, $4, $5)
|
||||||
on conflict (screen_id) do update
|
on conflict (screen_id) do update
|
||||||
set schedule_enabled = excluded.schedule_enabled,
|
set schedule_enabled = excluded.schedule_enabled,
|
||||||
power_on_time = excluded.power_on_time,
|
power_on_time = excluded.power_on_time,
|
||||||
power_off_time = excluded.power_off_time`,
|
power_off_time = excluded.power_off_time,
|
||||||
sc.ScreenID, sc.ScheduleEnabled, sc.PowerOnTime, sc.PowerOffTime)
|
override_on_until = excluded.override_on_until`,
|
||||||
|
sc.ScreenID, sc.ScheduleEnabled, sc.PowerOnTime, sc.PowerOffTime, sc.OverrideOnUntil)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListEnabled gibt alle Screens mit aktivem Zeitplan zurück.
|
// ListEnabled gibt alle Screens mit aktivem Zeitplan zurück.
|
||||||
func (s *ScreenScheduleStore) ListEnabled(ctx context.Context) ([]*ScreenSchedule, error) {
|
func (s *ScreenScheduleStore) ListEnabled(ctx context.Context) ([]*ScreenSchedule, error) {
|
||||||
rows, err := s.pool.Query(ctx,
|
rows, err := s.pool.Query(ctx,
|
||||||
`select screen_id, schedule_enabled, power_on_time, power_off_time
|
`select screen_id, schedule_enabled, power_on_time, power_off_time, override_on_until
|
||||||
from screen_schedules
|
from screen_schedules
|
||||||
where schedule_enabled = true
|
where schedule_enabled = true
|
||||||
and (power_on_time != '' or power_off_time != '')`)
|
and (power_on_time != '' or power_off_time != '')`)
|
||||||
|
|
@ -692,7 +694,7 @@ func (s *ScreenScheduleStore) ListEnabled(ctx context.Context) ([]*ScreenSchedul
|
||||||
var out []*ScreenSchedule
|
var out []*ScreenSchedule
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var sc ScreenSchedule
|
var sc ScreenSchedule
|
||||||
if err := rows.Scan(&sc.ScreenID, &sc.ScheduleEnabled, &sc.PowerOnTime, &sc.PowerOffTime); err != nil {
|
if err := rows.Scan(&sc.ScreenID, &sc.ScheduleEnabled, &sc.PowerOnTime, &sc.PowerOffTime, &sc.OverrideOnUntil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out = append(out, &sc)
|
out = append(out, &sc)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue