package handler import ( "net/http" "strconv" "sql-platform/internal/model" "github.com/gin-gonic/gin" ) // GET /api/v1/audit-logs func ListAuditLogs(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 100 { pageSize = 20 } var total int64 query := model.DB.Model(&model.AuditLog{}) if action := c.Query("action"); action != "" { query = query.Where("action = ?", action) } if targetType := c.Query("target_type"); targetType != "" { query = query.Where("target_type = ?", targetType) } if resultStatus := c.Query("result_status"); resultStatus != "" { query = query.Where("result_status = ?", resultStatus) } query.Count(&total) var logs []model.AuditLog offset := (page - 1) * pageSize query.Order("id DESC").Offset(offset).Limit(pageSize).Find(&logs) c.JSON(http.StatusOK, gin.H{ "items": logs, "total": total, "page": page, "page_size": pageSize, }) }