package handler import "net/http" // handleGetLastLog behandelt GET /api/v1/exercises/{id}/last-log. // Gibt den zuletzt geloggten Satz der Übung zurück, oder 404 wenn noch kein Satz existiert. func (h *Handler) handleGetLastLog(w http.ResponseWriter, r *http.Request) { uid, err := userID(r) if err != nil { writeError(w, http.StatusBadRequest, err.Error()) return } id, err := pathID(r, "id") if err != nil { writeError(w, http.StatusBadRequest, "Ungültige ID") return } lastLog, err := h.store.GetLastLog(id, uid) if err != nil { writeError(w, http.StatusInternalServerError, "Fehler beim Laden des letzten Logs") return } if lastLog == nil { writeError(w, http.StatusNotFound, "Noch kein Log für diese Übung") return } writeJSON(w, http.StatusOK, lastLog) } // handleGetExerciseHistory behandelt GET /api/v1/exercises/{id}/history. // Unterstützt Query-Parameter: limit (Standard: 30). func (h *Handler) handleGetExerciseHistory(w http.ResponseWriter, r *http.Request) { uid, err := userID(r) if err != nil { writeError(w, http.StatusBadRequest, err.Error()) return } id, err := pathID(r, "id") if err != nil { writeError(w, http.StatusBadRequest, "Ungültige ID") return } limit := queryInt(r, "limit", 30) logs, err := h.store.GetExerciseHistory(id, uid, limit) if err != nil { writeError(w, http.StatusInternalServerError, "Fehler beim Laden der Übungshistorie") return } writeJSON(w, http.StatusOK, logs) } // handleGetStatsOverview behandelt GET /api/v1/stats/overview. func (h *Handler) handleGetStatsOverview(w http.ResponseWriter, r *http.Request) { uid, err := userID(r) if err != nil { writeError(w, http.StatusBadRequest, err.Error()) return } overview, err := h.store.GetStatsOverview(uid) if err != nil { writeError(w, http.StatusInternalServerError, "Fehler beim Laden der Statistiken") return } writeJSON(w, http.StatusOK, overview) }