-
Notifications
You must be signed in to change notification settings - Fork 28
/
pagination.go
39 lines (32 loc) · 946 Bytes
/
pagination.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package keeper
import "github.com/cosmos/cosmos-sdk/types/query"
var (
paginationDefaultLimit uint64 = 100
paginationMaxLimit uint64 = 100
)
// shapePageRequest shapes the PageRequest params to avoid querying all items.
// PageRequest.offset is forbidden and PageRequest.count_total must be zero.
// PageRequest.limit mustn't exceed paginationMaxLimit and is set to
// paginationDefaultLimit when unset.
func shapePageRequest(req *query.PageRequest) *query.PageRequest {
res := newDefaultPageRequest()
if req == nil {
return res
}
res.Key = req.Key
res.Reverse = req.Reverse
if req.Limit > 0 && req.Limit <= paginationMaxLimit {
res.Limit = req.Limit
}
return res
}
// newDefaultPageRequest returns a default PageRequest.
func newDefaultPageRequest() *query.PageRequest {
return &query.PageRequest{
Key: nil,
Offset: 0,
Limit: paginationDefaultLimit,
CountTotal: false,
Reverse: false,
}
}