31 lines
668 B
Go
31 lines
668 B
Go
package data
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
func paginationLimitOffset(page, size, maxSize int) (limit, offset int) {
|
|
limit = size
|
|
if maxSize > 0 && size > maxSize {
|
|
limit = maxSize
|
|
}
|
|
if limit <= 0 {
|
|
return 0, 0
|
|
}
|
|
if page <= 0 {
|
|
page = 1
|
|
}
|
|
return limit, (page - 1) * limit
|
|
}
|
|
|
|
func applyPagination(db *gorm.DB, page, size, maxSize int) *gorm.DB {
|
|
limit, offset := paginationLimitOffset(page, size, maxSize)
|
|
if limit == 0 {
|
|
return db
|
|
}
|
|
return db.Offset(offset).Limit(limit)
|
|
}
|
|
|
|
func applyRequiredPagination(db *gorm.DB, page, size, maxSize int) *gorm.DB {
|
|
limit, offset := paginationLimitOffset(page, size, maxSize)
|
|
return db.Offset(offset).Limit(limit)
|
|
}
|