Rename proto Req/Res to Pagination (#6796)
* Rename proto Req to Pagination * Change Res to Pagination Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Alexander Bezobchuk
mergify[bot]
parent
515b25b94e
commit
69bbb8b327
@@ -16,19 +16,19 @@ import (
|
||||
// to the client.
|
||||
func FilteredPaginate(
|
||||
prefixStore types.KVStore,
|
||||
req *PageRequest,
|
||||
pageRequest *PageRequest,
|
||||
onResult func(key []byte, value []byte, accumulate bool) (bool, error),
|
||||
) (*PageResponse, error) {
|
||||
|
||||
// if the PageRequest is nil, use default PageRequest
|
||||
if req == nil {
|
||||
req = &PageRequest{}
|
||||
if pageRequest == nil {
|
||||
pageRequest = &PageRequest{}
|
||||
}
|
||||
|
||||
offset := req.Offset
|
||||
key := req.Key
|
||||
limit := req.Limit
|
||||
countTotal := req.CountTotal
|
||||
offset := pageRequest.Offset
|
||||
key := pageRequest.Key
|
||||
limit := pageRequest.Limit
|
||||
countTotal := pageRequest.CountTotal
|
||||
|
||||
if offset > 0 && key != nil {
|
||||
return nil, fmt.Errorf("invalid request, either offset or key is expected, got both")
|
||||
|
||||
@@ -117,7 +117,7 @@ func ExampleFilteredPaginate() {
|
||||
accountStore := prefix.NewStore(balancesStore, addr1.Bytes())
|
||||
|
||||
var balResult sdk.Coins
|
||||
res, err := query.FilteredPaginate(accountStore, pageReq, func(key []byte, value []byte, accumulate bool) (bool, error) {
|
||||
pageRes, err := query.FilteredPaginate(accountStore, pageReq, func(key []byte, value []byte, accumulate bool) (bool, error) {
|
||||
var bal sdk.Coin
|
||||
err := appCodec.UnmarshalBinaryBare(value, &bal)
|
||||
if err != nil {
|
||||
@@ -139,9 +139,9 @@ func ExampleFilteredPaginate() {
|
||||
if err != nil { // should return no error
|
||||
fmt.Println(err)
|
||||
}
|
||||
fmt.Println(&types.QueryAllBalancesResponse{Balances: balResult, Res: res})
|
||||
fmt.Println(&types.QueryAllBalancesResponse{Balances: balResult, Pagination: pageRes})
|
||||
// Output:
|
||||
// balances:<denom:"test0denom" amount:"250" > res:<next_key:"test1denom" total:5 >
|
||||
// balances:<denom:"test0denom" amount:"250" > pagination:<next_key:"test1denom" total:5 >
|
||||
}
|
||||
|
||||
func execFilterPaginate(store sdk.KVStore, pageReq *query.PageRequest, appCodec codec.Marshaler) (balances sdk.Coins, res *query.PageResponse, err error) {
|
||||
|
||||
@@ -14,19 +14,19 @@ const defaultLimit = 100
|
||||
// provided PageRequest. onResult should be used to do actual unmarshaling.
|
||||
func Paginate(
|
||||
prefixStore types.KVStore,
|
||||
req *PageRequest,
|
||||
pageRequest *PageRequest,
|
||||
onResult func(key []byte, value []byte) error,
|
||||
) (*PageResponse, error) {
|
||||
|
||||
// if the PageRequest is nil, use default PageRequest
|
||||
if req == nil {
|
||||
req = &PageRequest{}
|
||||
if pageRequest == nil {
|
||||
pageRequest = &PageRequest{}
|
||||
}
|
||||
|
||||
offset := req.Offset
|
||||
key := req.Key
|
||||
limit := req.Limit
|
||||
countTotal := req.CountTotal
|
||||
offset := pageRequest.Offset
|
||||
key := pageRequest.Key
|
||||
limit := pageRequest.Limit
|
||||
countTotal := pageRequest.CountTotal
|
||||
|
||||
if offset > 0 && key != nil {
|
||||
return nil, fmt.Errorf("invalid request, either offset or key is expected, got both")
|
||||
|
||||
@@ -27,7 +27,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
||||
//
|
||||
// message SomeRequest {
|
||||
// Foo some_parameter = 1;
|
||||
// PageRequest page = 2;
|
||||
// PageRequest pagination = 2;
|
||||
// }
|
||||
type PageRequest struct {
|
||||
// key is a value returned in PageResponse.next_key to begin
|
||||
|
||||
@@ -59,8 +59,8 @@ func TestPagination(t *testing.T) {
|
||||
request := types.NewQueryAllBalancesRequest(addr1, pageReq)
|
||||
res, err := queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res.Res.Total, uint64(numBalances))
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(numBalances))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.LessOrEqual(t, res.Balances.Len(), defaultLimit)
|
||||
|
||||
t.Log("verify page request with limit > defaultLimit, returns less or equal to `limit` records")
|
||||
@@ -68,8 +68,8 @@ func TestPagination(t *testing.T) {
|
||||
request = types.NewQueryAllBalancesRequest(addr1, pageReq)
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.LessOrEqual(t, res.Balances.Len(), overLimit)
|
||||
|
||||
t.Log("verify paginate with custom limit and countTotal true")
|
||||
@@ -78,8 +78,8 @@ func TestPagination(t *testing.T) {
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res.Balances.Len(), underLimit)
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(numBalances))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(numBalances))
|
||||
|
||||
t.Log("verify paginate with custom limit and countTotal false")
|
||||
pageReq = &query.PageRequest{Limit: defaultLimit, CountTotal: false}
|
||||
@@ -87,27 +87,27 @@ func TestPagination(t *testing.T) {
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res.Balances.Len(), defaultLimit)
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
|
||||
t.Log("verify paginate with custom limit, key and countTotal false")
|
||||
pageReq = &query.PageRequest{Key: res.Res.NextKey, Limit: defaultLimit, CountTotal: false}
|
||||
pageReq = &query.PageRequest{Key: res.Pagination.NextKey, Limit: defaultLimit, CountTotal: false}
|
||||
request = types.NewQueryAllBalancesRequest(addr1, pageReq)
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, res.Balances.Len(), defaultLimit)
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
|
||||
t.Log("verify paginate for last page, results in records less than max limit")
|
||||
pageReq = &query.PageRequest{Key: res.Res.NextKey, Limit: defaultLimit, CountTotal: false}
|
||||
pageReq = &query.PageRequest{Key: res.Pagination.NextKey, Limit: defaultLimit, CountTotal: false}
|
||||
request = types.NewQueryAllBalancesRequest(addr1, pageReq)
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.LessOrEqual(t, res.Balances.Len(), defaultLimit)
|
||||
require.Equal(t, res.Balances.Len(), lastPageRecords)
|
||||
require.Nil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.Nil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
|
||||
t.Log("verify paginate with offset and limit")
|
||||
pageReq = &query.PageRequest{Offset: 200, Limit: defaultLimit, CountTotal: false}
|
||||
@@ -116,8 +116,8 @@ func TestPagination(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.LessOrEqual(t, res.Balances.Len(), defaultLimit)
|
||||
require.Equal(t, res.Balances.Len(), lastPageRecords)
|
||||
require.Nil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.Nil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
|
||||
t.Log("verify paginate with offset and limit")
|
||||
pageReq = &query.PageRequest{Offset: 100, Limit: defaultLimit, CountTotal: false}
|
||||
@@ -125,11 +125,11 @@ func TestPagination(t *testing.T) {
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.LessOrEqual(t, res.Balances.Len(), defaultLimit)
|
||||
require.NotNil(t, res.Res.NextKey)
|
||||
require.Equal(t, res.Res.Total, uint64(0))
|
||||
require.NotNil(t, res.Pagination.NextKey)
|
||||
require.Equal(t, res.Pagination.Total, uint64(0))
|
||||
|
||||
t.Log("verify paginate with offset and key - error")
|
||||
pageReq = &query.PageRequest{Key: res.Res.NextKey, Offset: 100, Limit: defaultLimit, CountTotal: false}
|
||||
pageReq = &query.PageRequest{Key: res.Pagination.NextKey, Offset: 100, Limit: defaultLimit, CountTotal: false}
|
||||
request = types.NewQueryAllBalancesRequest(addr1, pageReq)
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.Error(t, err)
|
||||
@@ -141,7 +141,7 @@ func TestPagination(t *testing.T) {
|
||||
res, err = queryClient.AllBalances(gocontext.Background(), request)
|
||||
require.NoError(t, err)
|
||||
require.LessOrEqual(t, res.Balances.Len(), 0)
|
||||
require.Nil(t, res.Res.NextKey)
|
||||
require.Nil(t, res.Pagination.NextKey)
|
||||
}
|
||||
|
||||
func ExamplePaginate() {
|
||||
@@ -168,7 +168,7 @@ func ExamplePaginate() {
|
||||
authStore := ctx.KVStore(app.GetKey(authtypes.StoreKey))
|
||||
balancesStore := prefix.NewStore(authStore, types.BalancesPrefix)
|
||||
accountStore := prefix.NewStore(balancesStore, addr1.Bytes())
|
||||
res, err := query.Paginate(accountStore, request.Req, func(key []byte, value []byte) error {
|
||||
pageRes, err := query.Paginate(accountStore, request.Pagination, func(key []byte, value []byte) error {
|
||||
var tempRes sdk.Coin
|
||||
err := app.Codec().UnmarshalBinaryBare(value, &tempRes)
|
||||
if err != nil {
|
||||
@@ -180,9 +180,9 @@ func ExamplePaginate() {
|
||||
if err != nil { // should return no error
|
||||
fmt.Println(err)
|
||||
}
|
||||
fmt.Println(&types.QueryAllBalancesResponse{Balances: balResult, Res: res})
|
||||
fmt.Println(&types.QueryAllBalancesResponse{Balances: balResult, Pagination: pageRes})
|
||||
// Output:
|
||||
// balances:<denom:"foo0denom" amount:"100" > res:<next_key:"foo1denom" total:2 >
|
||||
// balances:<denom:"foo0denom" amount:"100" > pagination:<next_key:"foo1denom" total:2 >
|
||||
}
|
||||
|
||||
func setupTest() (*simapp.SimApp, sdk.Context, codec.Marshaler) {
|
||||
|
||||
Reference in New Issue
Block a user