Skip to content

Commit

Permalink
override QueryFnName (#4132)
Browse files Browse the repository at this point in the history
* override QueryFnName

* duplicate prepareDescriptor

* add CustomFlagOverrides && make change for poolmanager cli

(cherry picked from commit e15fc6b)

# Conflicts:
#	x/poolmanager/client/cli/query.go
  • Loading branch information
vuong177 authored and mergify[bot] committed Jan 31, 2023
1 parent 0eda4e3 commit 5a5826c
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 5 deletions.
1 change: 0 additions & 1 deletion osmoutils/osmocli/query_cmd_wrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ func QueryIndexCmd(moduleName string) *cobra.Command {

func AddQueryCmd[Q proto.Message, querier any](cmd *cobra.Command, newQueryClientFn func(grpc1.ClientConn) querier, f func() (*QueryDescriptor, Q)) {
desc, _ := f()
prepareDescriptor[Q](desc)
subCmd := BuildQueryCli[Q](desc, newQueryClientFn)
cmd.AddCommand(subCmd)
}
Expand Down
16 changes: 12 additions & 4 deletions x/gamm/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ func GetQueryCmd() *cobra.Command {
return cmd
}

var customRouterFlagOverride = map[string]string{
"router": FlagSwapRouteDenoms,
}

func GetCmdPool() (*osmocli.QueryDescriptor, *types.QueryPoolRequest) {
return &osmocli.QueryDescriptor{
Use: "pool [poolID]",
Expand Down Expand Up @@ -201,8 +205,10 @@ func GetCmdEstimateSwapExactAmountIn() (*osmocli.QueryDescriptor, *types.QuerySw
Short: "Query estimate-swap-exact-amount-in",
Long: `Query estimate-swap-exact-amount-in.{{.ExampleHeader}}
{{.CommandPrefix}} estimate-swap-exact-amount-in 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`,
ParseQuery: EstimateSwapExactAmountInParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
ParseQuery: EstimateSwapExactAmountInParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
QueryFnName: "EstimateSwapExactAmountIn",
CustomFlagOverrides: customRouterFlagOverride,
}, &types.QuerySwapExactAmountInRequest{}
}

Expand All @@ -213,8 +219,10 @@ func GetCmdEstimateSwapExactAmountOut() (*osmocli.QueryDescriptor, *types.QueryS
Short: "Query estimate-swap-exact-amount-out",
Long: `Query estimate-swap-exact-amount-out.{{.ExampleHeader}}
{{.CommandPrefix}} estimate-swap-exact-amount-out 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`,
ParseQuery: EstimateSwapExactAmountOutParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
ParseQuery: EstimateSwapExactAmountOutParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
QueryFnName: "EstimateSwapExactAmountOut",
CustomFlagOverrides: customRouterFlagOverride,
}, &types.QuerySwapExactAmountOutRequest{}
}

Expand Down
103 changes: 103 additions & 0 deletions x/poolmanager/client/cli/query.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package cli

import (
"strconv"

"github.com/gogo/protobuf/proto"
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"

"github.com/osmosis-labs/osmosis/osmoutils/osmocli"
"github.com/osmosis-labs/osmosis/v14/x/poolmanager/client/queryproto"
"github.com/osmosis-labs/osmosis/v14/x/poolmanager/types"
)

var customRouterFlagOverride = map[string]string{
"router": FlagSwapRouteDenoms,
}

// GetQueryCmd returns the cli query commands for this module.
func GetQueryCmd() *cobra.Command {
cmd := osmocli.QueryIndexCmd(types.ModuleName)

osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdNumPools)
osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdEstimateSwapExactAmountIn)
osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdEstimateSwapExactAmountOut)

return cmd
}

// GetCmdEstimateSwapExactAmountIn returns estimation of output coin when amount of x token input.
func GetCmdEstimateSwapExactAmountIn() (*osmocli.QueryDescriptor, *queryproto.EstimateSwapExactAmountInRequest) {
return &osmocli.QueryDescriptor{
Use: "estimate-swap-exact-amount-in <poolID> <sender> <tokenIn>",
Short: "Query estimate-swap-exact-amount-in",
Long: `Query estimate-swap-exact-amount-in.{{.ExampleHeader}}
{{.CommandPrefix}} estimate-swap-exact-amount-in 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`,
ParseQuery: EstimateSwapExactAmountInParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
QueryFnName: "EstimateSwapExactAmountIn",
CustomFlagOverrides: customRouterFlagOverride,
}, &queryproto.EstimateSwapExactAmountInRequest{}
}

// GetCmdEstimateSwapExactAmountOut returns estimation of input coin to get exact amount of x token output.
func GetCmdEstimateSwapExactAmountOut() (*osmocli.QueryDescriptor, *queryproto.EstimateSwapExactAmountOutRequest) {
return &osmocli.QueryDescriptor{
Use: "estimate-swap-exact-amount-out <poolID> <sender> <tokenOut>",
Short: "Query estimate-swap-exact-amount-out",
Long: `Query estimate-swap-exact-amount-out.{{.ExampleHeader}}
{{.CommandPrefix}} estimate-swap-exact-amount-out 1 osm11vmx8jtggpd9u7qr0t8vxclycz85u925sazglr7 stake --swap-route-pool-ids=2 --swap-route-pool-ids=3`,
ParseQuery: EstimateSwapExactAmountOutParseArgs,
Flags: osmocli.FlagDesc{RequiredFlags: []*flag.FlagSet{FlagSetMultihopSwapRoutes()}},
QueryFnName: "EstimateSwapExactAmountOut",
CustomFlagOverrides: customRouterFlagOverride,
}, &queryproto.EstimateSwapExactAmountOutRequest{}
}

// GetCmdNumPools return number of pools available.
func GetCmdNumPools() (*osmocli.QueryDescriptor, *queryproto.NumPoolsRequest) {
return &osmocli.QueryDescriptor{
Use: "num-pools",
Short: "Query number of pools",
Long: "{{.Short}}",
}, &queryproto.NumPoolsRequest{}
}

func EstimateSwapExactAmountInParseArgs(args []string, fs *flag.FlagSet) (proto.Message, error) {
poolID, err := strconv.Atoi(args[0])
if err != nil {
return nil, err
}

routes, err := swapAmountInRoutes(fs)
if err != nil {
return nil, err
}

return &queryproto.EstimateSwapExactAmountInRequest{
Sender: args[1], // TODO: where sender is used?
PoolId: uint64(poolID), // TODO: is this poolId used?
TokenIn: args[2],
Routes: routes,
}, nil
}

func EstimateSwapExactAmountOutParseArgs(args []string, fs *flag.FlagSet) (proto.Message, error) {
poolID, err := strconv.Atoi(args[0])
if err != nil {
return nil, err
}

routes, err := swapAmountOutRoutes(fs)
if err != nil {
return nil, err
}

return &queryproto.EstimateSwapExactAmountOutRequest{
Sender: args[1], // TODO: where sender is used?
PoolId: uint64(poolID), // TODO: is this poolId used?
Routes: routes,
TokenOut: args[2],
}, nil
}

0 comments on commit 5a5826c

Please sign in to comment.