package web import ( "net/http" "github.com/owen/vibeproxy/internal/database" ) func (h *Web) handleRequestLogs(w http.ResponseWriter, r *http.Request) { page := atoiDefault(r.URL.Query().Get("page"), 1) if page < 1 { page = 1 } const pageSize = 50 f := database.LogFilter{ Search: r.URL.Query().Get("q"), Status: atoiDefault(r.URL.Query().Get("status"), 0), Limit: pageSize, Offset: (page - 1) * pageSize, } logs, total, err := database.QueryRequestLogs(h.db, f) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } totalPages := (total + pageSize - 1) / pageSize if totalPages < 1 { totalPages = 1 } render(w, "logs", PageData{ Active: "logs", Title: "Request Logs", Data: map[string]any{"Logs": logs, "Total": total, "Page": page, "TotalPages": totalPages, "Query": f.Search, "Status": f.Status}, }) } func (h *Web) handleAuditLogs(w http.ResponseWriter, r *http.Request) { page := atoiDefault(r.URL.Query().Get("page"), 1) if page < 1 { page = 1 } const pageSize = 50 logs, total, err := database.ListAuditLogs(h.db, pageSize, (page-1)*pageSize) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } totalPages := (total + pageSize - 1) / pageSize if totalPages < 1 { totalPages = 1 } render(w, "logs_audit", PageData{ Active: "logs", Title: "Audit Log", Data: map[string]any{"Logs": logs, "Total": total, "Page": page, "TotalPages": totalPages}, }) }