From 733711c88c9a8eaf64d42c81ac0ce8900b903f29 Mon Sep 17 00:00:00 2001 From: rhuairahrighairigh Date: Fri, 24 Apr 2020 23:16:04 +0100 Subject: [PATCH] add query committee cmd --- x/committee/client/cli/query.go | 74 +++++++++++++++++++++++++++----- x/committee/client/rest/query.go | 1 - 2 files changed, 64 insertions(+), 11 deletions(-) diff --git a/x/committee/client/cli/query.go b/x/committee/client/cli/query.go index e0318fba..e97a8499 100644 --- a/x/committee/client/cli/query.go +++ b/x/committee/client/cli/query.go @@ -17,27 +17,69 @@ import ( // GetQueryCmd returns the cli query commands for this module func GetQueryCmd(queryRoute string, cdc *codec.Codec) *cobra.Command { - // Group gov queries under a subcommand - govQueryCmd := &cobra.Command{ + queryCmd := &cobra.Command{ Use: types.ModuleName, - Short: "Querying commands for the governance module", + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, } - govQueryCmd.AddCommand(client.GetCommands( + queryCmd.AddCommand(client.GetCommands( + // committees + GetCmdQueryCommittee(queryRoute, cdc), GetCmdQueryCommittees(queryRoute, cdc), - + // proposals GetCmdQueryProposal(queryRoute, cdc), GetCmdQueryProposals(queryRoute, cdc), - + // votes GetCmdQueryVotes(queryRoute, cdc), - + // other GetCmdQueryProposer(queryRoute, cdc), GetCmdQueryTally(queryRoute, cdc))...) - return govQueryCmd + return queryCmd +} + +// ------------------------------------------ +// Committees +// ------------------------------------------ + +// GetCmdQueryCommittee implements a query committee command. +func GetCmdQueryCommittee(queryRoute string, cdc *codec.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "committee [committee-id]", + Args: cobra.ExactArgs(1), + Short: "Query details of a single committee", + Example: fmt.Sprintf("%s query %s committee 1", version.ClientName, types.ModuleName), + RunE: func(cmd *cobra.Command, args []string) error { + cliCtx := context.NewCLIContext().WithCodec(cdc) + + // Prepare params for querier + committeeID, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return fmt.Errorf("committee-id %s not a valid uint", args[0]) + } + bz, err := cdc.MarshalJSON(types.NewQueryCommitteeParams(committeeID)) + if err != nil { + return err + } + + // Query + res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryCommittee), bz) + if err != nil { + return err + } + + // Decode and print result + committee := types.Committee{} + if err = cdc.UnmarshalJSON(res, &committee); err != nil { + return err + } + return cliCtx.PrintOutput(committee) + }, + } + return cmd } // GetCmdQueryCommittees implements a query committees command. @@ -67,6 +109,10 @@ func GetCmdQueryCommittees(queryRoute string, cdc *codec.Codec) *cobra.Command { return cmd } +// ------------------------------------------ +// Proposals +// ------------------------------------------ + // GetCmdQueryProposal implements the query proposal command. func GetCmdQueryProposal(queryRoute string, cdc *codec.Codec) *cobra.Command { return &cobra.Command{ @@ -82,7 +128,7 @@ func GetCmdQueryProposal(queryRoute string, cdc *codec.Codec) *cobra.Command { if err != nil { return fmt.Errorf("proposal-id %s not a valid uint", args[0]) } - bz, err := cdc.MarshalJSON(types.NewQueryCommitteeParams(proposalID)) + bz, err := cdc.MarshalJSON(types.NewQueryProposalParams(proposalID)) if err != nil { return err } @@ -122,7 +168,7 @@ func GetCmdQueryProposals(queryRoute string, cdc *codec.Codec) *cobra.Command { } // Query - res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/proposals", queryRoute), bz) + res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryProposals), bz) if err != nil { return err } @@ -139,6 +185,10 @@ func GetCmdQueryProposals(queryRoute string, cdc *codec.Codec) *cobra.Command { return cmd } +// ------------------------------------------ +// Votes +// ------------------------------------------ + // GetCmdQueryVotes implements the command to query for proposal votes. func GetCmdQueryVotes(queryRoute string, cdc *codec.Codec) *cobra.Command { return &cobra.Command{ @@ -176,6 +226,10 @@ func GetCmdQueryVotes(queryRoute string, cdc *codec.Codec) *cobra.Command { } } +// ------------------------------------------ +// Other +// ------------------------------------------ + func GetCmdQueryTally(queryRoute string, cdc *codec.Codec) *cobra.Command { return &cobra.Command{ Use: "tally [proposal-id]", diff --git a/x/committee/client/rest/query.go b/x/committee/client/rest/query.go index 1ae72928..5e6b4590 100644 --- a/x/committee/client/rest/query.go +++ b/x/committee/client/rest/query.go @@ -190,7 +190,6 @@ func queryProposerHandlerFn(cliCtx context.CLIContext) http.HandlerFunc { } // Write response - cliCtx = cliCtx.WithHeight(height) rest.PostProcessResponse(w, cliCtx, res) } }