You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
853 B
38 lines
853 B
package handlers
|
|
|
|
import (
|
|
"database/sql"
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"person-home/internal/db"
|
|
"person-home/internal/models"
|
|
)
|
|
|
|
type SettingsHandler struct {
|
|
DB *sql.DB
|
|
}
|
|
|
|
func (h *SettingsHandler) Get(w http.ResponseWriter, r *http.Request) {
|
|
s, err := db.GetSettings(h.DB)
|
|
if err != nil {
|
|
writeError(w, http.StatusInternalServerError, "failed to get settings")
|
|
return
|
|
}
|
|
writeJSON(w, http.StatusOK, s)
|
|
}
|
|
|
|
func (h *SettingsHandler) Update(w http.ResponseWriter, r *http.Request) {
|
|
var req models.UpdateSettingsRequest
|
|
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
|
writeError(w, http.StatusBadRequest, "invalid request body")
|
|
return
|
|
}
|
|
|
|
s, err := db.UpdateSettings(h.DB, &req)
|
|
if err != nil {
|
|
writeError(w, http.StatusInternalServerError, "failed to update settings")
|
|
return
|
|
}
|
|
writeJSON(w, http.StatusOK, s)
|
|
}
|
|
|