maplocation / internal /api /settings.go
sarveshpatel's picture
Upload 28 files
58407a4 verified
Raw
History Blame Contribute Delete
1.11 kB
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)
}