31 lines
560 B
Go
31 lines
560 B
Go
|
package orm
|
|||
|
|
|||
|
import "gorm.io/gorm"
|
|||
|
|
|||
|
// Page
|
|||
|
// @description: 分页组件
|
|||
|
// @param current
|
|||
|
// @param size
|
|||
|
// @return func(db *gorm.DB) *gorm.DB
|
|||
|
func Page(current, size int) func(db *gorm.DB) *gorm.DB {
|
|||
|
// 如果页码是-1,就不分页
|
|||
|
if current == -1 {
|
|||
|
return func(db *gorm.DB) *gorm.DB {
|
|||
|
return db
|
|||
|
}
|
|||
|
}
|
|||
|
// 分页
|
|||
|
return func(db *gorm.DB) *gorm.DB {
|
|||
|
if current == 0 {
|
|||
|
current = 1
|
|||
|
}
|
|||
|
if size < 1 {
|
|||
|
size = 10
|
|||
|
}
|
|||
|
// 计算偏移量
|
|||
|
offset := (current - 1) * size
|
|||
|
// 返回组装结果
|
|||
|
return db.Offset(offset).Limit(size)
|
|||
|
}
|
|||
|
}
|