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 (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.az-it.net/az/morz-infoboard/server/backend/internal/store"
|
"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)
|
http.Error(w, "invalid JSON", http.StatusBadRequest)
|
||||||
return
|
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{
|
if err := schedules.Upsert(r.Context(), &store.ScreenSchedule{
|
||||||
ScreenID: screen.ID,
|
ScreenID: screen.ID,
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/jackc/pgx/v5"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"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
|
`select screen_id, schedule_enabled, power_on_time, power_off_time
|
||||||
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)
|
||||||
if err != nil {
|
if errors.Is(err, pgx.ErrNoRows) {
|
||||||
return &ScreenSchedule{ScreenID: screenID}, nil
|
return &ScreenSchedule{ScreenID: screenID}, nil
|
||||||
}
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return &sc, nil
|
return &sc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue