fix: Zeitformat-Validierung + pgx.ErrNoRows in ScreenScheduleStore.Get
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
83af005fad
commit
fc5587c171
2 changed files with 18 additions and 1 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue