123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package service
- import "gorm.io/gorm"
- func checkPageParam(page, pageSize int) (int, int) {
- retPage := 0
- retPageSize := 0
- if page <= 0 {
- retPage = 1
- } else {
- retPage = page
- }
- if pageSize <= 0 {
- retPageSize = 20
- } else if pageSize > 100 {
- retPageSize = 100
- } else {
- retPageSize = pageSize
- }
- return retPage, retPageSize
- }
- type PaginationResult struct {
- Count int64
- Limit func(db *gorm.DB) *gorm.DB
- }
- func Paginate(db *gorm.DB, page int, size int) *PaginationResult {
- var count int64
- db.Count(&count)
- limit := func(db *gorm.DB) *gorm.DB {
- if page <= 0 {
- page = 1
- }
- switch {
- case size > 100:
- size = 100
- case size <= 0:
- size = 10
- }
- return db.Offset((page - 1) * size).Limit(size)
- }
- return &PaginationResult{
- Count: count,
- Limit: limit,
- }
- }
|