Skip to content

Commit

Permalink
add page flag for CLI queries (cosmos#6824)
Browse files Browse the repository at this point in the history
* add page flag for CLI queries

* fix review suggestions

* Fix `page` flag default value

* fix offset calc

* Apply suggestions from code review

Co-authored-by: Aaron Craelius <[email protected]>

* fix review suggestions

* refactor

* fix returning error

Co-authored-by: SaReN <[email protected]>
Co-authored-by: Aaron Craelius <[email protected]>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
4 people authored Jul 24, 2020
1 parent 1538e65 commit e906c01
Show file tree
Hide file tree
Showing 10 changed files with 74 additions and 22 deletions.
1 change: 1 addition & 0 deletions client/flags/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ func AddTxFlagsToCmd(cmd *cobra.Command) {

// AddPaginationFlagsToCmd adds common pagination flags to cmd
func AddPaginationFlagsToCmd(cmd *cobra.Command, query string) {
cmd.Flags().Uint64(FlagPage, 1, fmt.Sprintf("pagination page of %s to query for. This sets offset to a multiple of limit", query))
cmd.Flags().String(FlagPageKey, "", fmt.Sprintf("pagination page-key of %s to query for", query))
cmd.Flags().Uint64(FlagOffset, 0, fmt.Sprintf("pagination offset of %s to query for", query))
cmd.Flags().Uint64(FlagLimit, 100, fmt.Sprintf("pagination limit of %s to query for", query))
Expand Down
14 changes: 12 additions & 2 deletions client/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/spf13/pflag"

"github.com/cosmos/cosmos-sdk/client/flags"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/types/query"
)

Expand Down Expand Up @@ -44,16 +45,25 @@ func Paginate(numObjs, page, limit, defLimit int) (start, end int) {
}

// ReadPageRequest reads and builds the necessary page request flags for pagination.
func ReadPageRequest(flagSet *pflag.FlagSet) *query.PageRequest {
func ReadPageRequest(flagSet *pflag.FlagSet) (*query.PageRequest, error) {
pageKey, _ := flagSet.GetString(flags.FlagPageKey)
offset, _ := flagSet.GetUint64(flags.FlagOffset)
limit, _ := flagSet.GetUint64(flags.FlagLimit)
countTotal, _ := flagSet.GetBool(flags.FlagCountTotal)
page, _ := flagSet.GetUint64(flags.FlagPage)

if page > 1 && offset > 0 {
return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "page and offset cannot be used together")
}

if page > 1 {
offset = (page - 1) * limit
}

return &query.PageRequest{
Key: []byte(pageKey),
Offset: offset,
Limit: limit,
CountTotal: countTotal,
}
}, nil
}
6 changes: 5 additions & 1 deletion x/bank/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ Example:
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

if denom == "" {
params := types.NewQueryAllBalancesRequest(addr, pageReq)

Expand Down
5 changes: 4 additions & 1 deletion x/distribution/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,10 @@ $ %s query distribution slashes cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmq
return fmt.Errorf("end-height %s not a valid uint, please input a valid end-height", args[2])
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

res, err := queryClient.ValidatorSlashes(
context.Background(),
Expand Down
7 changes: 6 additions & 1 deletion x/evidence/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,12 @@ func QueryEvidenceCmd() func(*cobra.Command, []string) error {
return queryEvidence(clientCtx, hash)
}

return queryAllEvidence(clientCtx, client.ReadPageRequest(cmd.Flags()))
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

return queryAllEvidence(clientCtx, pageReq)
}
}

Expand Down
18 changes: 12 additions & 6 deletions x/gov/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ $ %s query gov proposals --page=2 --limit=100
}
queryClient := types.NewQueryClient(clientCtx)

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

res, err := queryClient.Proposals(
context.Background(),
Expand Down Expand Up @@ -299,7 +302,10 @@ $ %[1]s query gov votes 1 --page=2 --limit=100

}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

res, err := queryClient.Votes(
context.Background(),
Expand All @@ -314,9 +320,6 @@ $ %[1]s query gov votes 1 --page=2 --limit=100
},
}

// Deprecated, remove line when removing FlagPage altogether.
cmd.Flags().Int(flags.FlagPage, 1, "pagination page of proposals to query for")

flags.AddPaginationFlagsToCmd(cmd, "votes")
flags.AddQueryFlagsToCmd(cmd)

Expand Down Expand Up @@ -446,7 +449,10 @@ $ %s query gov deposits 1
return clientCtx.PrintOutput(dep)
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

res, err := queryClient.Deposits(
context.Background(),
Expand Down
7 changes: 6 additions & 1 deletion x/ibc/03-connection/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,13 @@ func GetCmdQueryConnections() *cobra.Command {

queryClient := types.NewQueryClient(clientCtx)

pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

req := &types.QueryConnectionsRequest{
Pagination: client.ReadPageRequest(cmd.Flags()),
Pagination: pageReq,
}

res, err := queryClient.Connections(context.Background(), req)
Expand Down
19 changes: 16 additions & 3 deletions x/ibc/04-channel/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ func GetCmdQueryChannels() *cobra.Command {
}
queryClient := types.NewQueryClient(clientCtx)

pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

req := &types.QueryChannelsRequest{
Pagination: client.ReadPageRequest(cmd.Flags()),
Pagination: pageReq,
}

res, err := queryClient.Channels(context.Background(), req)
Expand Down Expand Up @@ -110,10 +115,14 @@ func GetCmdQueryConnectionChannels() *cobra.Command {
return err
}
queryClient := types.NewQueryClient(clientCtx)
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

req := &types.QueryConnectionChannelsRequest{
Connection: args[0],
Pagination: client.ReadPageRequest(cmd.Flags()),
Pagination: pageReq,
}

res, err := queryClient.ConnectionChannels(context.Background(), req)
Expand Down Expand Up @@ -181,11 +190,15 @@ func GetCmdQueryPacketCommitments() *cobra.Command {
return err
}
queryClient := types.NewQueryClient(clientCtx)
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

req := &types.QueryPacketCommitmentsRequest{
PortID: args[0],
ChannelID: args[1],
Pagination: client.ReadPageRequest(cmd.Flags()),
Pagination: pageReq,
}

res, err := queryClient.PacketCommitments(context.Background(), req)
Expand Down
7 changes: 6 additions & 1 deletion x/slashing/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,12 @@ $ <appcli> query slashing signing-infos

queryClient := types.NewQueryClient(clientCtx)

params := &types.QuerySigningInfosRequest{Pagination: client.ReadPageRequest(cmd.Flags())}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}

params := &types.QuerySigningInfosRequest{Pagination: pageReq}
res, err := queryClient.SigningInfos(context.Background(), params)
if err != nil {
return err
Expand Down
12 changes: 6 additions & 6 deletions x/staking/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ $ %s query staking unbonding-delegations-from cosmosvaloper1gghjut3ccd8ay0zduzj6
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down Expand Up @@ -219,7 +219,7 @@ $ %s query staking redelegations-from cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fx
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down Expand Up @@ -327,7 +327,7 @@ $ %s query staking delegations cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down Expand Up @@ -382,7 +382,7 @@ $ %s query staking delegations-to cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ld
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down Expand Up @@ -491,7 +491,7 @@ $ %s query staking unbonding-delegations cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down Expand Up @@ -606,7 +606,7 @@ $ %s query staking redelegation cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
return err
}

pageReq := client.ReadPageRequest(cmd.Flags())
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
Expand Down

0 comments on commit e906c01

Please sign in to comment.