/
querier.go
112 lines (100 loc) · 4.06 KB
/
querier.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
package wasm
import (
"encoding/json"
"cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/desmos-labs/desmos/v5/cosmwasm"
reactionskeeper "github.com/desmos-labs/desmos/v5/x/reactions/keeper"
"github.com/desmos-labs/desmos/v5/x/reactions/types"
)
var _ cosmwasm.Querier = ReactionsWasmQuerier{}
type ReactionsWasmQuerier struct {
reactionskeeper reactionskeeper.Keeper
cdc codec.Codec
}
func NewReactionsWasmQuerier(reactionskeeper reactionskeeper.Keeper, cdc codec.Codec) ReactionsWasmQuerier {
return ReactionsWasmQuerier{reactionskeeper: reactionskeeper, cdc: cdc}
}
func (querier ReactionsWasmQuerier) QueryCustom(ctx sdk.Context, data json.RawMessage) ([]byte, error) {
var query types.ReactionsQuery
err := json.Unmarshal(data, &query)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
switch {
case query.Reactions != nil:
return querier.handleReactionsRequest(ctx, *query.Reactions)
case query.Reaction != nil:
return querier.handleReactionRequest(ctx, *query.Reaction)
case query.RegisteredReactions != nil:
return querier.handleRegisteredReactionsRequest(ctx, *query.RegisteredReactions)
case query.RegisteredReaction != nil:
return querier.handleRegisteredReactionRequest(ctx, *query.RegisteredReaction)
case query.ReactionsParams != nil:
return querier.handleReactionsParamsRequest(ctx, *query.ReactionsParams)
default:
return nil, sdkerrors.ErrInvalidRequest
}
}
func (querier ReactionsWasmQuerier) handleReactionsRequest(ctx sdk.Context, data json.RawMessage) (json.RawMessage, error) {
var req types.QueryReactionsRequest
err := querier.cdc.UnmarshalJSON(data, &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
res, err := querier.reactionskeeper.Reactions(sdk.WrapSDKContext(ctx), &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
}
return querier.cdc.MarshalJSON(res)
}
func (querier ReactionsWasmQuerier) handleReactionRequest(ctx sdk.Context, data json.RawMessage) (json.RawMessage, error) {
var req types.QueryReactionRequest
err := querier.cdc.UnmarshalJSON(data, &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
res, err := querier.reactionskeeper.Reaction(sdk.WrapSDKContext(ctx), &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
}
return querier.cdc.MarshalJSON(res)
}
func (querier ReactionsWasmQuerier) handleRegisteredReactionsRequest(ctx sdk.Context, data json.RawMessage) (json.RawMessage, error) {
var req types.QueryRegisteredReactionsRequest
err := querier.cdc.UnmarshalJSON(data, &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
res, err := querier.reactionskeeper.RegisteredReactions(sdk.WrapSDKContext(ctx), &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
}
return querier.cdc.MarshalJSON(res)
}
func (querier ReactionsWasmQuerier) handleRegisteredReactionRequest(ctx sdk.Context, data json.RawMessage) (json.RawMessage, error) {
var req types.QueryRegisteredReactionRequest
err := querier.cdc.UnmarshalJSON(data, &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
res, err := querier.reactionskeeper.RegisteredReaction(sdk.WrapSDKContext(ctx), &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
}
return querier.cdc.MarshalJSON(res)
}
func (querier ReactionsWasmQuerier) handleReactionsParamsRequest(ctx sdk.Context, data json.RawMessage) (json.RawMessage, error) {
var req types.QueryReactionsParamsRequest
err := querier.cdc.UnmarshalJSON(data, &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
}
res, err := querier.reactionskeeper.ReactionsParams(sdk.WrapSDKContext(ctx), &req)
if err != nil {
return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
}
return querier.cdc.MarshalJSON(res)
}