-
Notifications
You must be signed in to change notification settings - Fork 2
/
query.go
179 lines (145 loc) · 4.4 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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package types
import (
"fmt"
sdk "github.com/hdac-io/friday/types"
)
const (
ADDRESS = "address"
UREF = "uref"
HASH = "hash"
LOCAL = "local"
SYSTEM = "system"
)
// QueryExecutionLayerDetail payload for a EE query
type QueryExecutionLayerDetail struct {
KeyType string `json:"key_type"`
KeyData string `json:"key_data"`
Path string `json:"path"`
}
// implement fmt.Stringer
func (q QueryExecutionLayerDetail) String() string {
return fmt.Sprintf("Key type: %s\nKey data: %s\nPath: %s", q.KeyType, q.KeyData, q.Path)
}
// QueryGetBalanceDetail payload for balance query
type QueryGetBalanceDetail struct {
Address sdk.AccAddress `json:"address"`
}
// implement fmt.Stringer
func (q QueryGetBalanceDetail) String() string {
return fmt.Sprintf("Query public key or readable name: %s", q.Address)
}
// QueryGetStakeDetail payload for stake query
type QueryGetStakeDetail struct {
Address sdk.AccAddress `json:"address"`
}
// implement fmt.Stringer
func (q QueryGetStakeDetail) String() string {
return fmt.Sprintf("Query public key or readable name: %s", q.Address)
}
// QueryGetVoteDetail payload for user's vote amount query
type QueryGetVoteDetail struct {
Address sdk.AccAddress `json:"address"`
Dapp string `json:"dapp"`
}
// implement fmt.Stringer
func (q QueryGetVoteDetail) String() string {
return fmt.Sprintf("Query public key or readable name: %s\ndapp: %s", q.Address, q.Dapp)
}
// defines the params for the following queries:
// - 'custom/%s/validator'
type QueryValidatorParams struct {
ValidatorAddr sdk.AccAddress `json:"validator_address"`
}
func NewQueryValidatorParams(validatorAddr sdk.AccAddress) QueryValidatorParams {
return QueryValidatorParams{
ValidatorAddr: validatorAddr,
}
}
// defines the params for the following queries:
// - 'custom/%s/delegator'
type QueryDelegatorParams struct {
DelegatorAddr sdk.AccAddress `json:"delegator_address"`
ValidatorAddr sdk.AccAddress `json:"validator_address"`
}
func NewQueryDelegatorParams(delegaatorAddr sdk.AccAddress, validatorAddr sdk.AccAddress) QueryDelegatorParams {
return QueryDelegatorParams{
DelegatorAddr: delegaatorAddr,
ValidatorAddr: validatorAddr,
}
}
// defines the params for the following queries:
// - 'custom/%s/voter'
type QueryVoterParams interface {
GetAddress() sdk.AccAddress
GetContract() ContractAddress
}
var _ QueryVoterParams = QueryVoterParamsUref{}
var _ QueryVoterParams = QueryVoterParamsHash{}
type QueryVoterParamsUref struct {
Address sdk.AccAddress `json:"address"`
Contract ContractUrefAddress `json:"contract_address"`
}
func NewQueryVoterUrefParams(address sdk.AccAddress, contractAddress ContractUrefAddress) QueryVoterParamsUref {
return QueryVoterParamsUref{
Address: address,
Contract: contractAddress,
}
}
func (q QueryVoterParamsUref) GetAddress() sdk.AccAddress {
return q.Address
}
func (q QueryVoterParamsUref) GetContract() ContractAddress {
return q.Contract
}
type QueryVoterParamsHash struct {
Address sdk.AccAddress `json:"address"`
Contract ContractHashAddress `json:"contract_address"`
}
func NewQueryVoterHashParams(address sdk.AccAddress, contractAddress ContractHashAddress) QueryVoterParamsHash {
return QueryVoterParamsHash{
Address: address,
Contract: contractAddress,
}
}
func (q QueryVoterParamsHash) GetAddress() sdk.AccAddress {
return q.Address
}
func (q QueryVoterParamsHash) GetContract() ContractAddress {
return q.Contract
}
type QueryVoterResponse struct {
Address string `json:"address"`
Amount string `json:"amount"`
}
func NewQueryVoterResponse(address string, amount string) QueryVoterResponse {
return QueryVoterResponse{
Address: address,
Amount: amount,
}
}
// QueryGetReward payload for reward query
type QueryGetReward struct {
Address sdk.AccAddress `json:"address"`
}
func NewQueryGetReward(address sdk.AccAddress) QueryGetReward {
return QueryGetReward{
Address: address,
}
}
// implement fmt.Stringer
func (q QueryGetReward) String() string {
return fmt.Sprintf("Query public key or readable name: %s", q.Address)
}
// QueryGetCommission payload for commission query
type QueryGetCommission struct {
Address sdk.AccAddress `json:"address"`
}
func NewQueryGetCommission(address sdk.AccAddress) QueryGetCommission {
return QueryGetCommission{
Address: address,
}
}
// implement fmt.Stringer
func (q QueryGetCommission) String() string {
return fmt.Sprintf("Query public key or readable name: %s", q.Address)
}