| 1234567891011121314151617181920212223242526272829303132333435 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package internal
-
- import (
- "math"
-
- "code.gitea.io/gitea/models/db"
- )
-
- // ParsePaginator parses a db.Paginator into a skip and limit
- func ParsePaginator(paginator *db.ListOptions, maxNums ...int) (int, int) {
- // Use a very large number to indicate no limit
- unlimited := math.MaxInt32
- if len(maxNums) > 0 {
- // Some indexer engines have a limit on the page size, respect that
- unlimited = maxNums[0]
- }
-
- if paginator == nil || paginator.IsListAll() {
- // It shouldn't happen. In actual usage scenarios, there should not be requests to search all.
- // But if it does happen, respect it and return "unlimited".
- // And it's also useful for testing.
- return 0, unlimited
- }
-
- if paginator.PageSize == 0 {
- // Do not return any results when searching, it's used to get the total count only.
- return 0, 0
- }
-
- return paginator.GetSkipTake()
- }
|