-
Notifications
You must be signed in to change notification settings - Fork 46
/
query.go
141 lines (118 loc) · 3.92 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
package cli
import (
"context"
"fmt"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/version"
"github.com/spf13/cobra"
subspacestypes "github.com/desmos-labs/desmos/v7/x/subspaces/types"
"github.com/desmos-labs/desmos/v7/x/relationships/types"
)
// GetQueryCmd returns the command allowing to perform queries
func GetQueryCmd() *cobra.Command {
profileQueryCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Querying commands for the relationships module",
DisableFlagParsing: true,
SuggestionsMinimumDistance: 2,
RunE: client.ValidateCmd,
}
profileQueryCmd.AddCommand(
GetCmdQueryRelationships(),
GetCmdQueryBlocks(),
)
return profileQueryCmd
}
// GetCmdQueryRelationships returns the command allowing to query the relationships with optional user and subspace
func GetCmdQueryRelationships() *cobra.Command {
cmd := &cobra.Command{
Use: "relationships [subspace-id] [[creator]] [[counterparty]]",
Short: "Retrieve all the relationships inside a given subspace, with optional creator and counterparty",
Example: fmt.Sprintf(`%s query relationships relationships 1
%s query relationships relationships 1 desmos13p5pamrljhza3fp4es5m3llgmnde5fzcpq6nud
%s query relationships relationships 1 desmos13p5pamrljhza3fp4es5m3llgmnde5fzcpq6nud desmos159axlj0mkvch02f95t5tkghychyeueaslk6r8f`,
version.AppName, version.AppName, version.AppName),
Args: cobra.RangeArgs(1, 3),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
subspaceID, err := subspacestypes.ParseSubspaceID(args[0])
if err != nil {
return err
}
var creator string
if len(args) > 1 {
creator = args[1]
}
var counterparty string
if len(args) > 2 {
counterparty = args[2]
}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
res, err := queryClient.Relationships(
context.Background(),
types.NewQueryRelationshipsRequest(subspaceID, creator, counterparty, pageReq),
)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "user relationships")
return cmd
}
// GetCmdQueryBlocks returns the command allowing to query all the blocks with optional user and subspace
func GetCmdQueryBlocks() *cobra.Command {
cmd := &cobra.Command{
Use: "blocks [subspace-id] [[blocker]] [[blocked]]",
Short: "Retrieve the list of all the user blocks present inside the given subspace with optional blocker and blocked addresses",
Example: fmt.Sprintf(`%s query relationships blocks 1
%s query relationships blocks 1 desmos13p5pamrljhza3fp4es5m3llgmnde5fzcpq6nud
%s query relationships blocks 1 desmos13p5pamrljhza3fp4es5m3llgmnde5fzcpq6nud desmos159axlj0mkvch02f95t5tkghychyeueaslk6r8f`,
version.AppName, version.AppName, version.AppName),
Args: cobra.RangeArgs(1, 3),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
subspaceID, err := subspacestypes.ParseSubspaceID(args[0])
if err != nil {
return err
}
var blocker string
if len(args) > 1 {
blocker = args[1]
}
var blocked string
if len(args) > 2 {
blocked = args[2]
}
pageReq, err := client.ReadPageRequest(cmd.Flags())
if err != nil {
return err
}
res, err := queryClient.Blocks(
context.Background(),
types.NewQueryBlocksRequest(subspaceID, blocker, blocked, pageReq),
)
if err != nil {
return err
}
return clientCtx.PrintProto(res)
},
}
flags.AddQueryFlagsToCmd(cmd)
flags.AddPaginationFlagsToCmd(cmd, "user blocks")
return cmd
}