From d6e304f1b989299fc797af5e74932dc587058b14 Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 3 Nov 2025 19:59:27 +0100 Subject: [PATCH] chore: simplify unmarshaling (#25010) --- server/http_session_handler.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/server/http_session_handler.go b/server/http_session_handler.go index 06697dfd2..54bf276fe 100644 --- a/server/http_session_handler.go +++ b/server/http_session_handler.go @@ -119,26 +119,22 @@ func updateSessionHandler(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] - var data map[string]any + var data struct { + Vehicle, Loadpoint *string + } + if err := json.NewDecoder(r.Body).Decode(&data); err != nil { - jsonError(w, http.StatusBadRequest, errors.New("invalid JSON")) + jsonError(w, http.StatusBadRequest, err) return } - updates := map[string]any{} - for _, field := range []string{"vehicle", "loadpoint"} { - if val, ok := data[field]; ok { - updates[field] = val - } - } - - if len(updates) == 0 { - jsonError(w, http.StatusBadRequest, errors.New("no valid fields to update")) + if data.Vehicle == nil && data.Loadpoint == nil { + jsonError(w, http.StatusBadRequest, errors.New("nothing to update")) return } // https://github.com/evcc-io/evcc/issues/13738#issuecomment-2094070362 - if txn := db.Instance.Table("sessions").Where("id = ?", id).Updates(updates); txn.Error != nil { + if txn := db.Instance.Table("sessions").Where("id = ?", id).Updates(data); txn.Error != nil { jsonError(w, http.StatusBadRequest, txn.Error) return }