Files
Christoph K. 4db170b467 init
2026-04-07 09:49:17 +02:00

69 lines
1.9 KiB
Go
Executable File

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)
}