Documentation
¶
Overview ¶
Package pagination 提供框架无关的分页参数定义。
本包是 PageRequest 的唯一定义位置,middleware 和 data/gormx 均依赖本包, 避免 middleware 层反向依赖 data 层。
Index ¶
Constants ¶
View Source
const ( // DefaultPage 是默认页码。 DefaultPage = 1 // DefaultPageSize 是默认每页条数。 DefaultPageSize = 20 // MaxPageSize 是每页最大条数。 MaxPageSize = 500 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PageRequest ¶
type PageRequest struct {
Page int `json:"page" query:"page" form:"page"`
PageSize int `json:"page_size" query:"page_size" form:"page_size"`
}
PageRequest 表示分页查询请求参数。
func NewPageRequest ¶
func NewPageRequest(page, pageSize int) *PageRequest
NewPageRequest 根据页码和每页条数创建 PageRequest。
func (*PageRequest) Normalize ¶
func (r *PageRequest) Normalize()
Normalize 规范化分页参数,为非法值设置默认值,并限制最大每页条数。
func (*PageRequest) Offset ¶
func (r *PageRequest) Offset() int
Offset 返回分页查询的偏移量。 当计算结果溢出时返回 0(回退到第一页)。 只读:不在接收者上落 Normalize 的写 — 共享 PageRequest(如全局默认值) 并发调 Offset/Limit 时是数据竞争(2026-09-06 复审修复)。
type PageResponse ¶
type PageResponse[T any] struct { Items []T `json:"items"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` Pages int `json:"pages"` }
PageResponse 是全库统一的分页响应信封。
此前 data/gormx(JSON "list")与 data/crud(JSON "items")各有一个 字段名/JSON 契约不同的泛型分页结构,导致 API 契约分叉;两者已统一 为本类型的类型别名,新代码直接使用 pagination.PageResponse。
字段取舍说明:数据字段名采用 items(与 handler/crudh 的 REST 契约 一致),pages 保留 gormx 语义(总页数,向上取整)。
Click to show internal directories.
Click to hide internal directories.