pagination.go 601 B

123456789101112131415161718192021222324252627282930
  1. package logic
  2. import "math"
  3. const (
  4. defaultPage = 1
  5. defaultPageSize = 10
  6. maxPageSize = 100
  7. )
  8. // normalizePage applies defaults and bounds to the requested page/pageSize,
  9. // and keeps the computed offset within int64 even for absurd page numbers.
  10. func normalizePage(page, pageSize int64) (int64, int64) {
  11. if page < 1 {
  12. page = defaultPage
  13. }
  14. if pageSize < 1 {
  15. pageSize = defaultPageSize
  16. }
  17. if pageSize > maxPageSize {
  18. pageSize = maxPageSize
  19. }
  20. const safeOffset = math.MaxInt64 / 2
  21. if page-1 > safeOffset/pageSize {
  22. page = safeOffset/pageSize + 1
  23. }
  24. return page, pageSize
  25. }