fix: Zeitformat-Validierung + pgx.ErrNoRows in ScreenScheduleStore.Get

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jesko Anschütz 2026-03-27 07:21:01 +01:00
parent 83af005fad
commit fc5587c171
2 changed files with 18 additions and 1 deletions

View file

@ -3,6 +3,7 @@ package manage
import (
"encoding/json"
"net/http"
"time"
"git.az-it.net/az/morz-infoboard/server/backend/internal/store"
)
@ -30,6 +31,18 @@ func HandleUpdateSchedule(screens *store.ScreenStore, schedules *store.ScreenSch
http.Error(w, "invalid JSON", http.StatusBadRequest)
return
}
if body.PowerOnTime != "" {
if _, err := time.Parse("15:04", body.PowerOnTime); err != nil {
http.Error(w, "invalid power_on_time format (use HH:MM)", http.StatusBadRequest)
return
}
}
if body.PowerOffTime != "" {
if _, err := time.Parse("15:04", body.PowerOffTime); err != nil {
http.Error(w, "invalid power_off_time format (use HH:MM)", http.StatusBadRequest)
return
}
}
if err := schedules.Upsert(r.Context(), &store.ScreenSchedule{
ScreenID: screen.ID,

View file

@ -7,6 +7,7 @@ import (
"fmt"
"time"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool"
)
@ -653,9 +654,12 @@ func (s *ScreenScheduleStore) Get(ctx context.Context, screenID string) (*Screen
`select screen_id, schedule_enabled, power_on_time, power_off_time
from screen_schedules where screen_id = $1`, screenID).
Scan(&sc.ScreenID, &sc.ScheduleEnabled, &sc.PowerOnTime, &sc.PowerOffTime)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return &ScreenSchedule{ScreenID: screenID}, nil
}
if err != nil {
return nil, err
}
return &sc, nil
}