-
Notifications
You must be signed in to change notification settings - Fork 371
/
query.go
154 lines (127 loc) · 3.57 KB
/
query.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package cli
import (
"context"
"strings"
"github.com/spf13/cobra"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/kava-labs/kava/x/swap/types"
)
// flags for cli queries
const (
flagOwner = "owner"
flagPool = "pool"
)
// GetQueryCmd returns the cli query commands for the module
func GetQueryCmd(queryRoute string) *cobra.Command {
swapQueryCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Querying commands for the swap module",
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: client.ValidateCmd,
}
cmds := []*cobra.Command{
queryParamsCmd(queryRoute),
queryDepositsCmd(queryRoute),
queryPoolsCmd(queryRoute),
}
for _, cmd := range cmds {
flags.AddQueryFlagsToCmd(cmd)
}
swapQueryCmd.AddCommand(cmds...)
return swapQueryCmd
}
func queryParamsCmd(queryRoute string) *cobra.Command {
return &cobra.Command{
Use: "params",
Short: "get the swap module parameters",
Long: "Get the current global swap 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)
res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{})
if err != nil {
return err
}
return clientCtx.PrintProto(&res.Params)
},
}
}
func queryDepositsCmd(queryRoute string) *cobra.Command {
cmd := &cobra.Command{
Use: "deposits",
Short: "get liquidity provider deposits",
Long: strings.TrimSpace(`get liquidity provider deposits:
Example:
$ kvcli q swap deposits --pool bnb:usdx
$ kvcli q swap deposits --owner kava1l0xsq2z7gqd7yly0g40y5836g0appumark77ny
$ kvcli q swap deposits --pool bnb:usdx --owner kava1l0xsq2z7gqd7yly0g40y5836g0appumark77ny
$ kvcli q swap deposits --page=2 --limit=100
`,
),
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
bechOwnerAddr, err := cmd.Flags().GetString(flagOwner)
if err != nil {
return err
}
pool, err := cmd.Flags().GetString(flagPool)
if err != nil {
return err
}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
params := types.QueryDepositsRequest{
Owner: bechOwnerAddr,
PoolId: pool,
Pagination: pageReq,
}
res, err := queryClient.Deposits(context.Background(), ¶ms)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddPaginationFlagsToCmd(cmd, "deposits")
cmd.Flags().String(flagPool, "", "pool name")
cmd.Flags().String(flagOwner, "", "owner, also known as a liquidity provider")
return cmd
}
func queryPoolsCmd(queryRoute string) *cobra.Command {
cmd := &cobra.Command{
Use: "pools",
Short: "get statistics for all pools",
Long: strings.TrimSpace(`get statistics for all liquidity pools:
Example:
$ kvcli q swap pools`,
),
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)
params := types.QueryPoolsRequest{}
res, err := queryClient.Pools(context.Background(), ¶ms)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
return cmd
}