github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/client/cli/query.go (about)

     1  package cli
     2  
     3  import (
     4  	"fmt"
     5  	client "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags"
     6  	"strings"
     7  
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  	"github.com/spf13/cobra"
    12  	"github.com/spf13/viper"
    13  
    14  	"github.com/fibonacci-chain/fbc/x/dex/types"
    15  )
    16  
    17  // GetQueryCmd returns the cli query commands for this module
    18  func GetQueryCmd(queryRoute string, cdc *codec.Codec) *cobra.Command {
    19  	queryCmd := &cobra.Command{
    20  		Use:   "dex",
    21  		Short: "Querying commands for the dex module",
    22  	}
    23  
    24  	queryCmd.AddCommand(client.GetCommands(
    25  		GetCmdQueryProducts(queryRoute, cdc),
    26  		GetCmdQueryDeposits(queryRoute, cdc),
    27  		GetCmdQueryProductRank(queryRoute, cdc),
    28  		GetCmdQueryParams(queryRoute, cdc),
    29  		GetCmdQueryProductsUnderDelisting(queryRoute, cdc),
    30  		GetCmdQueryOperator(queryRoute, cdc),
    31  		GetCmdQueryOperators(queryRoute, cdc),
    32  	)...)
    33  
    34  	return queryCmd
    35  }
    36  
    37  // GetCmdQueryProducts queries products info
    38  func GetCmdQueryProducts(queryRoute string, cdc *codec.Codec) *cobra.Command {
    39  	cmd := &cobra.Command{
    40  		Use:   "products",
    41  		Short: "Query the list of token pairs",
    42  		RunE: func(_ *cobra.Command, _ []string) error {
    43  			cliCtx := context.NewCLIContext().WithCodec(cdc)
    44  			ownerAddress := viper.GetString("owner")
    45  			page := viper.GetUint("page-number")
    46  			perPage := viper.GetUint("items-per-page")
    47  			queryParams := types.NewQueryDexInfoParams(ownerAddress, int(page), int(perPage))
    48  			bz, err := cdc.MarshalJSON(queryParams)
    49  			if err != nil {
    50  				return err
    51  			}
    52  			res, _, err := cliCtx.QueryWithData(
    53  				fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryProducts), bz)
    54  			if err != nil {
    55  				return err
    56  			}
    57  			fmt.Println(string(res))
    58  			return nil
    59  		},
    60  	}
    61  	cmd.Flags().StringP("owner", "", "", "address of the product owner")
    62  	cmd.Flags().UintP("page-number", "p", types.DefaultPage, "page num")
    63  	cmd.Flags().UintP("items-per-page", "i", types.DefaultPerPage, "items per page")
    64  
    65  	return cmd
    66  }
    67  
    68  // GetCmdQueryDeposits queries deposits about address
    69  func GetCmdQueryDeposits(queryRoute string, cdc *codec.Codec) *cobra.Command {
    70  	cmd := &cobra.Command{
    71  		Use:   "deposits [account-addr]",
    72  		Short: "Query product deposits",
    73  		Args:  cobra.ExactArgs(1),
    74  		RunE: func(_ *cobra.Command, args []string) error {
    75  			ownerAddress := args[0]
    76  			baseAsset := viper.GetString("base-asset")
    77  			quoteAsset := viper.GetString("quote-asset")
    78  			page := viper.GetUint("page-number")
    79  			perPage := viper.GetUint("items-per-page")
    80  			queryParams := types.NewQueryDepositParams(ownerAddress, baseAsset, quoteAsset, int(page), int(perPage))
    81  
    82  			bz, err := cdc.MarshalJSON(queryParams)
    83  			if err != nil {
    84  				return err
    85  			}
    86  			cliCtx := context.NewCLIContext().WithCodec(cdc)
    87  			res, _, err := cliCtx.QueryWithData(
    88  				fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryDeposits), bz)
    89  			if err != nil {
    90  				return err
    91  			}
    92  			fmt.Println(string(res))
    93  			return nil
    94  		},
    95  	}
    96  	cmd.Flags().String("base-asset", "", "base asset")
    97  	cmd.Flags().String("quote-asset", "", "quote asset")
    98  	cmd.Flags().UintP("page-number", "p", types.DefaultPage, "page num")
    99  	cmd.Flags().UintP("items-per-page", "i", types.DefaultPerPage, "items per page")
   100  	return cmd
   101  }
   102  
   103  // GetCmdQueryProductRank queries products ranked by deposits
   104  func GetCmdQueryProductRank(queryRoute string, cdc *codec.Codec) *cobra.Command {
   105  	cmd := &cobra.Command{
   106  		Use:   "product-rank",
   107  		Short: "Query the rank of token pairs",
   108  		RunE: func(_ *cobra.Command, _ []string) error {
   109  			page := viper.GetUint("page-number")
   110  			perPage := viper.GetUint("items-per-page")
   111  			queryParams := types.NewQueryDexInfoParams("", int(page), int(perPage))
   112  			bz, err := cdc.MarshalJSON(queryParams)
   113  			if err != nil {
   114  				return err
   115  			}
   116  			cliCtx := context.NewCLIContext().WithCodec(cdc)
   117  			res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryMatchOrder), bz)
   118  			if err != nil {
   119  				return err
   120  			}
   121  
   122  			fmt.Println(string(res))
   123  			return nil
   124  		},
   125  	}
   126  	cmd.Flags().UintP("page-number", "p", types.DefaultPage, "page num")
   127  	cmd.Flags().UintP("items-per-page", "i", types.DefaultPerPage, "items per page")
   128  	return cmd
   129  }
   130  
   131  // GetCmdQueryParams implements the query params command.
   132  func GetCmdQueryParams(queryRoute string, cdc *codec.Codec) *cobra.Command {
   133  	return &cobra.Command{
   134  		Use:   "params",
   135  		Short: "Query all the modifiable parameters of gov proposal",
   136  		Long: strings.TrimSpace(`Query the all the parameters for the governance process:
   137  
   138  $ fbchaincli query dex params
   139  `),
   140  		Args: cobra.NoArgs,
   141  		RunE: func(_ *cobra.Command, _ []string) error {
   142  			cliCtx := context.NewCLIContext().WithCodec(cdc)
   143  
   144  			route := fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryParameters)
   145  			bz, _, err := cliCtx.QueryWithData(route, nil)
   146  			if err != nil {
   147  				return err
   148  			}
   149  
   150  			var params types.Params
   151  			cdc.MustUnmarshalJSON(bz, &params)
   152  			return cliCtx.PrintOutput(params)
   153  		},
   154  	}
   155  }
   156  
   157  // GetCmdQueryProductsUnderDelisting queries the token pairs involved in dex delisting
   158  func GetCmdQueryProductsUnderDelisting(queryRoute string, cdc *codec.Codec) *cobra.Command {
   159  	return &cobra.Command{
   160  		Use:   "products-delisting",
   161  		Short: "Query the products under dex delisting",
   162  		Long: strings.TrimSpace(`
   163  		Query all the products' names involved in dex delisting:
   164  
   165  $ fbchaincli query dex products-delisting`),
   166  		RunE: func(cmd *cobra.Command, _ []string) error {
   167  			cliCtx := context.NewCLIContext().WithCodec(cdc)
   168  			res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryProductsDelisting), nil)
   169  			if err != nil {
   170  				return err
   171  			}
   172  
   173  			var tokenPairNames Strings
   174  			if err := cdc.UnmarshalJSON(res, &tokenPairNames); err != nil {
   175  				return err
   176  			}
   177  			return cliCtx.PrintOutput(tokenPairNames)
   178  		},
   179  	}
   180  }
   181  
   182  // GetCmdQueryOperator queries operator info
   183  func GetCmdQueryOperator(queryRoute string, cdc *codec.Codec) *cobra.Command {
   184  	cmd := &cobra.Command{
   185  		Use:   "operator [operator-address]",
   186  		Args:  cobra.ExactArgs(1),
   187  		Short: "Query the operator of the account",
   188  		RunE: func(_ *cobra.Command, args []string) error {
   189  			cliCtx := context.NewCLIContext().WithCodec(cdc)
   190  
   191  			addr, err := sdk.AccAddressFromBech32(args[0])
   192  			if err != nil {
   193  				return sdk.ErrInvalidAddress(fmt.Sprintf("invalid address:%s", args[0]))
   194  			}
   195  
   196  			params := types.NewQueryDexOperatorParams(addr)
   197  			bz, err := cliCtx.Codec.MarshalJSON(params)
   198  			if err != nil {
   199  				return err
   200  			}
   201  
   202  			res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryOperator), bz)
   203  			if err != nil {
   204  				return err
   205  			}
   206  			var operator types.DEXOperator
   207  			cdc.MustUnmarshalJSON(res, &operator)
   208  			return cliCtx.PrintOutput(operator)
   209  		},
   210  	}
   211  
   212  	return cmd
   213  }
   214  
   215  // GetCmdQueryOperators queries all operator info
   216  func GetCmdQueryOperators(queryRoute string, cdc *codec.Codec) *cobra.Command {
   217  	cmd := &cobra.Command{
   218  		Use:   "operators",
   219  		Short: "Query all operator",
   220  		RunE: func(_ *cobra.Command, _ []string) error {
   221  			cliCtx := context.NewCLIContext().WithCodec(cdc)
   222  
   223  			res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryOperators), nil)
   224  			if err != nil {
   225  				return err
   226  			}
   227  			var operators types.DEXOperators
   228  			cdc.MustUnmarshalJSON(res, &operators)
   229  			return cliCtx.PrintOutput(operators)
   230  		},
   231  	}
   232  
   233  	return cmd
   234  }
   235  
   236  // Strings is just for the object of []string could be inputted into cliCtx.PrintOutput(...)
   237  type Strings []string
   238  
   239  func (strs Strings) String() string {
   240  	return strings.Join(strs, "\n")
   241  }