Help us shape the future of Go! Take the 2026 Go Developer Survey

pagination

package
v0.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2026 License: MIT Imports: 0 Imported by: 0

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) Limit

func (r *PageRequest) Limit() int

Limit 返回分页查询的限制条数。

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 语义(总页数,向上取整)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL