Files
core/internal/api/failures.go

49 lines
1.1 KiB
Go

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