Spaces:
Sleeping
Sleeping
| package api | |
| import ( | |
| "encoding/json" | |
| "net/http" | |
| "gpsbackend/internal/model" | |
| ) | |
| // handleGetSettings returns the global app settings. | |
| func (s *Server) handleGetSettings(w http.ResponseWriter, r *http.Request) { | |
| def, err := s.store.DefaultInterval(r.Context()) | |
| if err != nil { | |
| writeError(w, http.StatusInternalServerError, "could not load settings") | |
| return | |
| } | |
| writeJSON(w, http.StatusOK, model.SettingsDTO{DefaultCaptureIntervalSec: def}) | |
| } | |
| // handlePutSettings updates the global default capture interval. | |
| func (s *Server) handlePutSettings(w http.ResponseWriter, r *http.Request) { | |
| var req model.SettingsDTO | |
| if err := json.NewDecoder(r.Body).Decode(&req); err != nil { | |
| writeError(w, http.StatusBadRequest, "invalid JSON") | |
| return | |
| } | |
| if req.DefaultCaptureIntervalSec < 10 { | |
| writeError(w, http.StatusBadRequest, "default_capture_interval_sec must be >= 10") | |
| return | |
| } | |
| if err := s.store.SetDefaultInterval(r.Context(), req.DefaultCaptureIntervalSec); err != nil { | |
| writeError(w, http.StatusInternalServerError, "could not save settings") | |
| return | |
| } | |
| writeJSON(w, http.StatusOK, req) | |
| } | |