package api import ( "net/http" "reanimator/internal/repository/failures" ) type FailureDependencies struct { Failures *failures.FailureRepository } type failureHandlers struct { deps FailureDependencies } func RegisterFailureRoutes(mux *http.ServeMux, deps FailureDependencies) { h := failureHandlers{deps: deps} mux.HandleFunc("/failures", h.handleFailures) } func (h failureHandlers) handleFailures(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { w.WriteHeader(http.StatusMethodNotAllowed) return } if h.deps.Failures == nil { writeError(w, http.StatusInternalServerError, "failures unavailable") return } limit := 200 if raw := r.URL.Query().Get("limit"); raw != "" { parsed, err := parseIntParam(raw) if err != nil || parsed <= 0 { writeError(w, http.StatusBadRequest, "limit must be a positive integer") return } limit = parsed } items, err := h.deps.Failures.ListAll(r.Context(), limit) if err != nil { writeError(w, http.StatusInternalServerError, "list failures failed") return } writeJSON(w, http.StatusOK, map[string]any{"items": items}) }