mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 18:15:19 +00:00
4c879bc4fb
* Add earn deposits query param to return individual vaults value as ukava * Add value_in_staked_tokens param handler to specific vault query * Use separate ukava coins when querying deposits in ukava Avoid usd of sdk.Coins.Add() as those will aggregate ukava amounts
184 lines
4.5 KiB
Go
184 lines
4.5 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/cosmos/cosmos-sdk/client"
|
|
"github.com/cosmos/cosmos-sdk/client/flags"
|
|
"github.com/cosmos/cosmos-sdk/version"
|
|
|
|
"github.com/kava-labs/kava/x/earn/types"
|
|
)
|
|
|
|
// flags for cli queries
|
|
const (
|
|
flagDenom = "denom"
|
|
flagOwner = "owner"
|
|
flagValueInStakedTokens = "value_in_staked_tokens"
|
|
)
|
|
|
|
// GetQueryCmd returns the cli query commands for the earn module
|
|
func GetQueryCmd() *cobra.Command {
|
|
earnQueryCommand := &cobra.Command{
|
|
Use: types.ModuleName,
|
|
Short: "Querying commands for the earn module",
|
|
DisableFlagParsing: true,
|
|
SuggestionsMinimumDistance: 2,
|
|
RunE: client.ValidateCmd,
|
|
}
|
|
|
|
cmds := []*cobra.Command{
|
|
queryParamsCmd(),
|
|
queryVaultsCmd(),
|
|
queryVaultCmd(),
|
|
queryDepositsCmd(),
|
|
}
|
|
|
|
for _, cmd := range cmds {
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
}
|
|
|
|
earnQueryCommand.AddCommand(cmds...)
|
|
|
|
return earnQueryCommand
|
|
}
|
|
|
|
func queryParamsCmd() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "params",
|
|
Short: "get the earn module parameters",
|
|
Long: "Get the current earn module parameters.",
|
|
Args: cobra.NoArgs,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx, err := client.GetClientQueryContext(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
req := types.NewQueryParamsRequest()
|
|
res, err := queryClient.Params(context.Background(), req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintProto(&res.Params)
|
|
},
|
|
}
|
|
}
|
|
|
|
func queryVaultsCmd() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "vaults",
|
|
Short: "get all earn vaults",
|
|
Long: "Get all earn module vaults.",
|
|
Args: cobra.NoArgs,
|
|
Example: fmt.Sprintf(`%[1]s q %[2]s vaults`, version.AppName, types.ModuleName),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx, err := client.GetClientQueryContext(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
req := types.NewQueryVaultsRequest()
|
|
res, err := queryClient.Vaults(context.Background(), req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintProto(res)
|
|
},
|
|
}
|
|
}
|
|
|
|
func queryVaultCmd() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "vault",
|
|
Short: "get a earn vault",
|
|
Long: "Get a specific earn module vault by denom.",
|
|
Args: cobra.ExactArgs(1),
|
|
Example: fmt.Sprintf(`%[1]s q %[2]s vault usdx`, version.AppName, types.ModuleName),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx, err := client.GetClientQueryContext(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
req := types.NewQueryVaultRequest(args[0])
|
|
res, err := queryClient.Vault(context.Background(), req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintProto(res)
|
|
},
|
|
}
|
|
}
|
|
|
|
func queryDepositsCmd() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "deposits",
|
|
Short: "get earn vault deposits",
|
|
Long: "Get earn vault deposits for all or specific accounts and vaults.",
|
|
Args: cobra.NoArgs,
|
|
Example: fmt.Sprintf(`%[1]s q %[2]s deposits
|
|
%[1]s q %[2]s deposits --owner kava1l0xsq2z7gqd7yly0g40y5836g0appumark77ny --denom usdx
|
|
%[1]s q %[2]s deposits --denom usdx`, version.AppName, types.ModuleName),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx, err := client.GetClientQueryContext(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ownerBech, err := cmd.Flags().GetString(flagOwner)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
denom, err := cmd.Flags().GetString(flagDenom)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
valueInStakedTokens, err := cmd.Flags().GetBool(flagValueInStakedTokens)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
req := types.NewQueryDepositsRequest(
|
|
ownerBech,
|
|
denom,
|
|
valueInStakedTokens,
|
|
pageReq,
|
|
)
|
|
res, err := queryClient.Deposits(context.Background(), req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintProto(res)
|
|
},
|
|
}
|
|
|
|
flags.AddPaginationFlagsToCmd(cmd, "deposits")
|
|
|
|
cmd.Flags().String(flagOwner, "", "(optional) filter for deposits by owner address")
|
|
cmd.Flags().String(flagDenom, "", "(optional) filter for deposits by vault denom")
|
|
cmd.Flags().Bool(flagValueInStakedTokens, false, "(optional) get underlying staked tokens for staking derivative vaults")
|
|
|
|
return cmd
|
|
}
|