github.com/Finschia/finschia-sdk@v0.48.1/x/authz/client/cli/query.go (about)

     1  package cli
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/spf13/cobra"
     8  
     9  	"github.com/Finschia/finschia-sdk/client"
    10  	"github.com/Finschia/finschia-sdk/client/flags"
    11  	sdk "github.com/Finschia/finschia-sdk/types"
    12  	"github.com/Finschia/finschia-sdk/version"
    13  	"github.com/Finschia/finschia-sdk/x/authz"
    14  	bank "github.com/Finschia/finschia-sdk/x/bank/types"
    15  )
    16  
    17  // GetQueryCmd returns the cli query commands for this module
    18  func GetQueryCmd() *cobra.Command {
    19  	authorizationQueryCmd := &cobra.Command{
    20  		Use:                        authz.ModuleName,
    21  		Short:                      "Querying commands for the authz module",
    22  		Long:                       "",
    23  		DisableFlagParsing:         true,
    24  		SuggestionsMinimumDistance: 2,
    25  		RunE:                       client.ValidateCmd,
    26  	}
    27  
    28  	authorizationQueryCmd.AddCommand(
    29  		GetCmdQueryGrants(),
    30  		GetQueryGranterGrants(),
    31  		GetQueryGranteeGrants(),
    32  	)
    33  
    34  	return authorizationQueryCmd
    35  }
    36  
    37  // GetCmdQueryGrants implements the query authorization command.
    38  func GetCmdQueryGrants() *cobra.Command {
    39  	cmd := &cobra.Command{
    40  		Use:   "grants [granter-addr] [grantee-addr] [msg-type-url]?",
    41  		Args:  cobra.RangeArgs(2, 3),
    42  		Short: "query grants for a granter-grantee pair and optionally a msg-type-url",
    43  		Long: strings.TrimSpace(
    44  			fmt.Sprintf(`Query authorization grants for a granter-grantee pair. If msg-type-url
    45  is set, it will select grants only for that msg type.
    46  Examples:
    47  $ %s query %s grants link1skj.. link1skjwj..
    48  $ %s query %s grants link1skjw.. link1skjwj.. %s
    49  `,
    50  				version.AppName, authz.ModuleName,
    51  				version.AppName, authz.ModuleName, bank.SendAuthorization{}.MsgTypeURL()),
    52  		),
    53  		RunE: func(cmd *cobra.Command, args []string) error {
    54  			clientCtx, err := client.GetClientQueryContext(cmd)
    55  			if err != nil {
    56  				return err
    57  			}
    58  			queryClient := authz.NewQueryClient(clientCtx)
    59  
    60  			granter, err := sdk.AccAddressFromBech32(args[0])
    61  			if err != nil {
    62  				return err
    63  			}
    64  			grantee, err := sdk.AccAddressFromBech32(args[1])
    65  			if err != nil {
    66  				return err
    67  			}
    68  			msgAuthorized := ""
    69  			if len(args) >= 3 {
    70  				msgAuthorized = args[2]
    71  			}
    72  			pageReq, err := client.ReadPageRequest(cmd.Flags())
    73  			if err != nil {
    74  				return err
    75  			}
    76  
    77  			res, err := queryClient.Grants(
    78  				cmd.Context(),
    79  				&authz.QueryGrantsRequest{
    80  					Granter:    granter.String(),
    81  					Grantee:    grantee.String(),
    82  					MsgTypeUrl: msgAuthorized,
    83  					Pagination: pageReq,
    84  				},
    85  			)
    86  			if err != nil {
    87  				return err
    88  			}
    89  
    90  			return clientCtx.PrintProto(res)
    91  		},
    92  	}
    93  	flags.AddQueryFlagsToCmd(cmd)
    94  	flags.AddPaginationFlagsToCmd(cmd, "grants")
    95  	return cmd
    96  }
    97  
    98  func GetQueryGranterGrants() *cobra.Command {
    99  	cmd := &cobra.Command{
   100  		Use:     "grants-by-granter [granter-addr]",
   101  		Aliases: []string{"granter-grants"},
   102  		Args:    cobra.ExactArgs(1),
   103  		Short:   "query authorization grants granted by granter",
   104  		Long: strings.TrimSpace(
   105  			fmt.Sprintf(`Query authorization grants granted by granter.
   106  Examples:
   107  $ %s q %s grants-by-granter link1skj..
   108  `,
   109  				version.AppName, authz.ModuleName),
   110  		),
   111  		RunE: func(cmd *cobra.Command, args []string) error {
   112  			clientCtx, err := client.GetClientQueryContext(cmd)
   113  			if err != nil {
   114  				return err
   115  			}
   116  
   117  			granter, err := sdk.AccAddressFromBech32(args[0])
   118  			if err != nil {
   119  				return err
   120  			}
   121  
   122  			pageReq, err := client.ReadPageRequest(cmd.Flags())
   123  			if err != nil {
   124  				return err
   125  			}
   126  
   127  			queryClient := authz.NewQueryClient(clientCtx)
   128  			res, err := queryClient.GranterGrants(
   129  				cmd.Context(),
   130  				&authz.QueryGranterGrantsRequest{
   131  					Granter:    granter.String(),
   132  					Pagination: pageReq,
   133  				},
   134  			)
   135  			if err != nil {
   136  				return err
   137  			}
   138  
   139  			return clientCtx.PrintProto(res)
   140  		},
   141  	}
   142  	flags.AddQueryFlagsToCmd(cmd)
   143  	flags.AddPaginationFlagsToCmd(cmd, "granter-grants")
   144  	return cmd
   145  }
   146  
   147  func GetQueryGranteeGrants() *cobra.Command {
   148  	cmd := &cobra.Command{
   149  		Use:     "grants-by-grantee [grantee-addr]",
   150  		Aliases: []string{"grantee-grants"},
   151  		Args:    cobra.ExactArgs(1),
   152  		Short:   "query authorization grants granted to a grantee",
   153  		Long: strings.TrimSpace(
   154  			fmt.Sprintf(`Query authorization grants granted to a grantee.
   155  Examples:
   156  $ %s q %s grants-by-grantee link1skj..
   157  `,
   158  				version.AppName, authz.ModuleName),
   159  		),
   160  		RunE: func(cmd *cobra.Command, args []string) error {
   161  			clientCtx, err := client.GetClientQueryContext(cmd)
   162  			if err != nil {
   163  				return err
   164  			}
   165  
   166  			grantee, err := sdk.AccAddressFromBech32(args[0])
   167  			if err != nil {
   168  				return err
   169  			}
   170  
   171  			pageReq, err := client.ReadPageRequest(cmd.Flags())
   172  			if err != nil {
   173  				return err
   174  			}
   175  
   176  			queryClient := authz.NewQueryClient(clientCtx)
   177  			res, err := queryClient.GranteeGrants(
   178  				cmd.Context(),
   179  				&authz.QueryGranteeGrantsRequest{
   180  					Grantee:    grantee.String(),
   181  					Pagination: pageReq,
   182  				},
   183  			)
   184  			if err != nil {
   185  				return err
   186  			}
   187  
   188  			return clientCtx.PrintProto(res)
   189  		},
   190  	}
   191  	flags.AddQueryFlagsToCmd(cmd)
   192  	flags.AddPaginationFlagsToCmd(cmd, "grantee-grants")
   193  	return cmd
   194  }