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, ¶ms) 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 }