package server import ( "net/http" "strconv" "git.wntrmute.dev/kyle/mcr/internal/db" ) // AdminListAuditHandler handles GET /v1/audit. func AdminListAuditHandler(database *db.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { q := r.URL.Query() limit := 50 if n := q.Get("n"); n != "" { if v, err := strconv.Atoi(n); err == nil && v > 0 { limit = v } } offset := 0 if o := q.Get("offset"); o != "" { if v, err := strconv.Atoi(o); err == nil && v >= 0 { offset = v } } filter := db.AuditFilter{ EventType: q.Get("event_type"), ActorID: q.Get("actor_id"), Repository: q.Get("repository"), Since: q.Get("since"), Until: q.Get("until"), Limit: limit, Offset: offset, } events, err := database.ListAuditEvents(filter) if err != nil { writeAdminError(w, http.StatusInternalServerError, "internal error") return } if events == nil { events = []db.AuditEvent{} } writeJSON(w, http.StatusOK, events) } }