package interfaces import ( "strconv" "mengstack/internal/kernel/response" "mengstack/internal/kernel/tenant" "mengstack/internal/modules/audit/application" auditdomain "mengstack/internal/modules/audit/domain" "github.com/gin-gonic/gin" ) type Handler struct { svc *application.Service } func NewHandler(svc *application.Service) *Handler { return &Handler{svc: svc} } func (h *Handler) ListLogs(c *gin.Context) { tenantID, _ := tenant.FromContext(c.Request.Context()) page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) query := auditdomain.AuditQuery{ TenantID: tenantID, UserID: parseUintQuery(c, "user_id"), Action: c.Query("action"), Resource: c.Query("resource"), Page: page, PageSize: pageSize, } dtos, total, err := h.svc.Query(c.Request.Context(), query) if err != nil { response.HandleError(c, err) return } response.Success(c, gin.H{ "items": dtos, "total": total, "page": page, }) } func parseUintQuery(c *gin.Context, key string) uint { v, _ := strconv.ParseUint(c.DefaultQuery(key, "0"), 10, 64) return uint(v) }