pagination_request.go 920 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Author: simon (ynwdlxm@163.com)
  2. // Date: 2025/7/15 14:16
  3. // Desc: 分页请求验证器
  4. package requests
  5. import (
  6. "github.com/gin-gonic/gin"
  7. "github.com/thedevsaddam/govalidator"
  8. )
  9. type PaginationRequest struct {
  10. Sort string `valid:"sort" form:"sort"`
  11. Order string `valid:"order" form:"order"`
  12. PerPage string `valid:"per_page" form:"per_page"`
  13. }
  14. func Pagination(data any, c *gin.Context) map[string][]string {
  15. rules := govalidator.MapData{
  16. "sort": []string{"in:id,created_at,updated_at"},
  17. "order": []string{"in:asc,desc"},
  18. "per_page": []string{"numeric_between:2,100"},
  19. }
  20. messages := govalidator.MapData{
  21. "sort": []string{
  22. "in:排序字段仅支持 id,created_at,updated_at",
  23. },
  24. "order": []string{
  25. "in:排序规则仅支持 asc,desc",
  26. },
  27. "per_page": []string{
  28. "numeric_between:每页条数的值介于 2~100 之间",
  29. },
  30. }
  31. return validate(data, rules, messages)
  32. }