2026-09-19 01:31:34 +08:00
|
|
|
// Package gormx 提供 responsex 的 GORM 分页辅助。
|
|
|
|
|
//
|
|
|
|
|
// 按需加载:只有显式 import 本包的项目才依赖 gorm。
|
|
|
|
|
//
|
|
|
|
|
// import 路径:code.yun.ink/pkg/responsex/gormx
|
2026-07-22 01:17:07 +08:00
|
|
|
package gormx
|
2024-06-30 17:42:27 +08:00
|
|
|
|
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
|
|
|
|
|
|
// 计算GORM DB的分页
|
2026-09-19 01:31:34 +08:00
|
|
|
// page 与 size 同时小于等于 0 时,只限制最大条数(1000),不做偏移
|
2024-06-30 17:42:27 +08:00
|
|
|
func GetDbOffset(db *gorm.DB, page, size int64) *gorm.DB {
|
|
|
|
|
offset := int(0)
|
|
|
|
|
limit := int(0)
|
|
|
|
|
if page <= 0 && size <= 0 {
|
|
|
|
|
// 最大可找1000条
|
|
|
|
|
limit = 1000
|
|
|
|
|
} else {
|
|
|
|
|
if page <= 0 {
|
|
|
|
|
page = 1
|
|
|
|
|
}
|
|
|
|
|
if size <= 0 {
|
|
|
|
|
size = 10
|
|
|
|
|
}
|
|
|
|
|
offset = int((page - 1) * size)
|
|
|
|
|
limit = int(size)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return db.Offset(offset).Limit(limit)
|
|
|
|
|
}
|