Skip to content

Commit 4f72143

Browse files
committed
fix nft queries
1 parent 57719cf commit 4f72143

File tree

8 files changed

+34
-76
lines changed

8 files changed

+34
-76
lines changed

submodules/evm-nft/grpc_query.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,9 @@ func (q Querier) CollectionsByAccount(ctx context.Context, req *nfttypes.QueryCo
6060
if err != nil {
6161
return nil, status.Error(codes.InvalidArgument, err.Error())
6262
}
63-
accountAddrString := accountSdkAddr.String()
6463

6564
collectionSdkAddrs := []sdk.AccAddress{}
66-
_, pageRes, err := query.CollectionFilteredPaginate(ctx, q.collectionOwnerMap, req.Pagination,
67-
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (bool, error) {
68-
if k.K1().String() == accountAddrString {
69-
return true, nil
70-
}
71-
return false, nil
72-
},
65+
_, pageRes, err := query.CollectionPaginate(ctx, q.collectionOwnerMap, req.Pagination,
7366
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (uint64, error) {
7467
collectionSdkAddrs = append(collectionSdkAddrs, k.K2())
7568
return v, nil
@@ -134,17 +127,12 @@ func (sm EvmNFTSubmodule) getTokensByCollection(ctx context.Context, req *nfttyp
134127
return nil, status.Error(codes.InvalidArgument, err.Error())
135128
}
136129

137-
res, pageRes, err := query.CollectionFilteredPaginate(ctx, sm.tokenMap, req.Pagination,
138-
func(key collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (bool, error) {
139-
if slices.Equal(key.K1(), colSdkAddr) {
140-
return true, nil
141-
}
142-
return false, nil
143-
},
130+
res, pageRes, err := query.CollectionPaginate(ctx, sm.tokenMap, req.Pagination,
144131
func(k collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (*nfttypes.IndexedToken, error) {
145132
v.CollectionName, _ = sm.getCollectionNameFromPairSubmodule(ctx, v.CollectionName)
146133
return &v, nil
147134
},
135+
query.WithCollectionPaginationPairPrefix[sdk.AccAddress, string](colSdkAddr),
148136
)
149137

150138
if err != nil {

submodules/evm-nft/submodule.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,14 @@ type EvmNFTSubmodule struct {
3333
vmKeeper *evmkeeper.Keeper
3434
pairSubmodule types.PairSubmodule
3535

36-
collectionMap *collections.Map[sdk.AccAddress, nfttypes.IndexedCollection]
36+
// collectionMap: key(collection address), value(collection)
37+
collectionMap *collections.Map[sdk.AccAddress, nfttypes.IndexedCollection]
38+
// collectionOwnerMap: key(owner address, collection address), value(collection`s object address)
3739
collectionOwnerMap *collections.Map[collections.Pair[sdk.AccAddress, sdk.AccAddress], uint64]
38-
tokenMap *collections.Map[collections.Pair[sdk.AccAddress, string], nfttypes.IndexedToken]
39-
tokenOwnerMap *collections.Map[collections.Triple[sdk.AccAddress, sdk.AccAddress, string], bool]
40+
// tokenMap: key(collection address, token id), value(token)
41+
tokenMap *collections.Map[collections.Pair[sdk.AccAddress, string], nfttypes.IndexedToken]
42+
// tokenOwnerMap: key(owner address, collection address, token id), value(bool as placeholder)
43+
tokenOwnerMap *collections.Map[collections.Triple[sdk.AccAddress, sdk.AccAddress, string], bool]
4044
}
4145

4246
func NewevmNFTSubmodule(

submodules/move-nft/grpc_query.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,9 @@ func (q Querier) CollectionsByAccount(ctx context.Context, req *nfttypes.QueryCo
6161
return nil, status.Error(codes.InvalidArgument, err.Error())
6262
}
6363
accountSdkAddr := getCosmosAddress(accountAddr)
64-
accountAddrString := accountSdkAddr.String()
6564

6665
collectionSdkAddrs := []sdk.AccAddress{}
67-
_, pageRes, err := query.CollectionFilteredPaginate(ctx, q.collectionOwnerMap, req.Pagination,
68-
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (bool, error) {
69-
if k.K1().String() == accountAddrString {
70-
return true, nil
71-
}
72-
return false, nil
73-
},
66+
_, pageRes, err := query.CollectionPaginate(ctx, q.collectionOwnerMap, req.Pagination,
7467
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (uint64, error) {
7568
collectionSdkAddrs = append(collectionSdkAddrs, k.K2())
7669
return v, nil
@@ -136,17 +129,12 @@ func (sm MoveNftSubmodule) getTokensByCollection(ctx context.Context, req *nftty
136129
}
137130
colSdkAddr := getCosmosAddress(collAddr)
138131

139-
res, pageRes, err := query.CollectionFilteredPaginate(ctx, sm.tokenMap, req.Pagination,
140-
func(key collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (bool, error) {
141-
if slices.Equal(key.K1(), colSdkAddr) {
142-
return true, nil
143-
}
144-
return false, nil
145-
},
132+
res, pageRes, err := query.CollectionPaginate(ctx, sm.tokenMap, req.Pagination,
146133
func(k collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (*nfttypes.IndexedToken, error) {
147134
v.CollectionName, _ = sm.getCollectionNameFromPairSubmodule(ctx, v.CollectionName)
148135
return &v, nil
149136
},
137+
query.WithCollectionPaginationPairPrefix[sdk.AccAddress, string](colSdkAddr),
150138
)
151139

152140
if err != nil {

submodules/move-nft/submodule.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ type MoveNftSubmodule struct {
3131
vmKeeper types.MoveKeeper
3232
pairSubmodule types.PairSubmodule
3333

34-
// collectionMap: key(collection address`), value(collection)
34+
// collectionMap: key(collection address), value(collection)
3535
collectionMap *collections.Map[sdk.AccAddress, nfttypes.IndexedCollection]
3636
// collectionOwnerMap: key(owner address, collection address), value(collection`s object address)
3737
collectionOwnerMap *collections.Map[collections.Pair[sdk.AccAddress, sdk.AccAddress], uint64]
38-
// tokenMap: key(owner address, token id), value(token)
38+
// tokenMap: key(collection address, token id), value(token)
3939
tokenMap *collections.IndexedMap[collections.Pair[sdk.AccAddress, string], nfttypes.IndexedToken, TokenIndex]
4040
// tokenOwnerMap: key(owner address, collection address, token id), value(bool as placeholder)
4141
tokenOwnerMap *collections.Map[collections.Triple[sdk.AccAddress, sdk.AccAddress, string], bool]

submodules/wasm-nft/collect.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func (sm WasmNFTSubmodule) handlerSendOrTransferEvent(ctx context.Context, event
116116

117117
token, err := sm.tokenMap.Get(ctx, tpk)
118118
if err != nil {
119-
sm.Logger(ctx).Debug("failed to get nft from prev owner and object addres", "collection-addr", data.ContractAddress, "token-id", data.TokenId, "prevOwner", data.Sender, "error", err)
119+
sm.Logger(ctx).Debug("failed to get nft from prev owner and object address", "collection-addr", data.ContractAddress, "token-id", data.TokenId, "prevOwner", data.Sender, "error", err)
120120
return cosmoserr.Wrap(err, "failed to get nft from tokenMap")
121121
}
122122
token.OwnerAddr = data.Recipient.String()

submodules/wasm-nft/grpc_query.go

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,9 @@ func (q Querier) CollectionsByAccount(ctx context.Context, req *nfttypes.QueryCo
6161
return nil, status.Error(codes.InvalidArgument, err.Error())
6262
}
6363
accountSdkAddr := getCosmosAddress(accountAddr)
64-
accountAddrString := accountSdkAddr.String()
6564

6665
collectionSdkAddrs := []sdk.AccAddress{}
67-
_, pageRes, err := query.CollectionFilteredPaginate(ctx, q.collectionOwnerMap, req.Pagination,
68-
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (bool, error) {
69-
if k.K1().String() == accountAddrString {
70-
return true, nil
71-
}
72-
return false, nil
73-
},
66+
_, pageRes, err := query.CollectionPaginate(ctx, q.collectionOwnerMap, req.Pagination,
7467
func(k collections.Pair[sdk.AccAddress, sdk.AccAddress], v uint64) (uint64, error) {
7568
collectionSdkAddrs = append(collectionSdkAddrs, k.K2())
7669
return v, nil
@@ -136,17 +129,12 @@ func (sm WasmNFTSubmodule) getTokensByCollection(ctx context.Context, req *nftty
136129
}
137130
colSdkAddr := getCosmosAddress(collAddr)
138131

139-
res, pageRes, err := query.CollectionFilteredPaginate(ctx, sm.tokenMap, req.Pagination,
140-
func(key collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (bool, error) {
141-
if slices.Equal(key.K1(), colSdkAddr) {
142-
return true, nil
143-
}
144-
return false, nil
145-
},
132+
res, pageRes, err := query.CollectionPaginate(ctx, sm.tokenMap, req.Pagination,
146133
func(k collections.Pair[sdk.AccAddress, string], v nfttypes.IndexedToken) (*nfttypes.IndexedToken, error) {
147134
v.CollectionName, _ = sm.getCollectionNameFromPairSubmodule(ctx, v.CollectionName)
148135
return &v, nil
149136
},
137+
query.WithCollectionPaginationPairPrefix[sdk.AccAddress, string](colSdkAddr),
150138
)
151139
if err != nil {
152140
return nil, handleCollectionErr(err)
@@ -189,10 +177,7 @@ func (sm WasmNFTSubmodule) getTokensByAccount(ctx context.Context, req *nfttypes
189177
ownerSdkAddr := getCosmosAddress(ownerAddr)
190178
identifiers := []collections.Pair[sdk.AccAddress, string]{}
191179

192-
_, pageRes, err := query.CollectionFilteredPaginate(ctx, sm.tokenOwnerMap, req.Pagination,
193-
func(k collections.Triple[sdk.AccAddress, sdk.AccAddress, string], _ bool) (bool, error) {
194-
return true, nil
195-
},
180+
_, pageRes, err := query.CollectionPaginate(ctx, sm.tokenOwnerMap, req.Pagination,
196181
func(k collections.Triple[sdk.AccAddress, sdk.AccAddress, string], v bool) (bool, error) {
197182
identifiers = append(identifiers, collections.Join(k.K2(), k.K3()))
198183
return v, nil

submodules/wasm-nft/submodule.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ type WasmNFTSubmodule struct {
3131
vmKeeper types.WasmKeeper
3232
pairSubmodule types.PairSubmodule
3333

34-
// collectionMap: key(collection address`), value(collection)
34+
// collectionMap: key(collection address), value(collection)
3535
collectionMap *collections.Map[sdk.AccAddress, nfttypes.IndexedCollection]
3636
// collectionOwnerMap: key(owner address, collection address), value(collection`s object address)
3737
collectionOwnerMap *collections.Map[collections.Pair[sdk.AccAddress, sdk.AccAddress], uint64]
38-
// tokenMap: key(owner address, token id), value(token)
38+
// tokenMap: key(collection address, token id), value(token)
3939
tokenMap *collections.Map[collections.Pair[sdk.AccAddress, string], nfttypes.IndexedToken]
4040
// tokenOwnerMap: key(owner address, collection address, token id), value(bool as placeholder)
4141
tokenOwnerMap *collections.Map[collections.Triple[sdk.AccAddress, sdk.AccAddress, string], bool]
@@ -87,39 +87,39 @@ func NewWasmNFTSubmodule(
8787
}
8888

8989
// Logger returns a module-specific logger.
90-
func (sub WasmNFTSubmodule) Logger(ctx context.Context) log.Logger {
90+
func (sm WasmNFTSubmodule) Logger(ctx context.Context) log.Logger {
9191
sdkCtx := sdk.UnwrapSDKContext(ctx)
9292
return sdkCtx.Logger().With("module", "x/"+types.SubmoduleName)
9393
}
9494

95-
func (sub WasmNFTSubmodule) Name() string {
95+
func (sm WasmNFTSubmodule) Name() string {
9696
return types.SubmoduleName
9797
}
9898

99-
func (sub WasmNFTSubmodule) Version() string {
99+
func (sm WasmNFTSubmodule) Version() string {
100100
return types.Version
101101
}
102102

103-
func (sub WasmNFTSubmodule) RegisterQueryHandlerClient(cc client.Context, mux *runtime.ServeMux) error {
103+
func (sm WasmNFTSubmodule) RegisterQueryHandlerClient(cc client.Context, mux *runtime.ServeMux) error {
104104
return nfttypes.RegisterQueryHandlerClient(context.Background(), mux, nfttypes.NewQueryClient(cc))
105105
}
106106

107-
func (sub WasmNFTSubmodule) RegisterQueryServer(s grpc.Server) {
108-
nfttypes.RegisterQueryServer(s, NewQuerier(sub))
107+
func (sm WasmNFTSubmodule) RegisterQueryServer(s grpc.Server) {
108+
nfttypes.RegisterQueryServer(s, NewQuerier(sm))
109109
}
110110

111-
func (sub WasmNFTSubmodule) Prepare(ctx context.Context) error {
111+
func (sm WasmNFTSubmodule) Prepare(ctx context.Context) error {
112112
return nil
113113
}
114114

115-
func (sub WasmNFTSubmodule) Initialize(ctx context.Context) error {
115+
func (sm WasmNFTSubmodule) Initialize(ctx context.Context) error {
116116
return nil
117117
}
118118

119-
func (sub WasmNFTSubmodule) FinalizeBlock(ctx context.Context, req abci.RequestFinalizeBlock, res abci.ResponseFinalizeBlock) error {
120-
return sub.finalizeBlock(ctx, req, res)
119+
func (sm WasmNFTSubmodule) FinalizeBlock(ctx context.Context, req abci.RequestFinalizeBlock, res abci.ResponseFinalizeBlock) error {
120+
return sm.finalizeBlock(ctx, req, res)
121121
}
122122

123-
func (sub WasmNFTSubmodule) Commit(ctx context.Context, res abci.ResponseCommit, changeSet []*storetypes.StoreKVPair) error {
123+
func (sm WasmNFTSubmodule) Commit(ctx context.Context, res abci.ResponseCommit, changeSet []*storetypes.StoreKVPair) error {
124124
return nil
125125
}

submodules/wasm-nft/vm_util.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package wasm_nft
22

33
import (
44
"context"
5-
"encoding/base64"
65
"encoding/json"
76
"strconv"
87

@@ -24,19 +23,13 @@ var (
2423
qreqCollectionNumTokens = []byte("{\"num_tokens\":{}}") // {"num_tokens":{}}
2524
)
2625

27-
func encode(req []byte) []byte {
28-
res := make([]byte, base64.StdEncoding.EncodedLen(len(req)))
29-
base64.StdEncoding.Encode(res, req)
30-
return res
31-
}
32-
3326
func generateQueryRequestToGetNftInfo(tokenId string) []byte {
3427
return []byte(`{"nft_info":{"token_id":"` + tokenId + `"}}`)
3528
//return encode(qb)
3629
}
3730

3831
func (sm WasmNFTSubmodule) getCollectionContractInfo(ctx context.Context, colAddr sdk.AccAddress) (*types.ContractInfo, error) {
39-
rb, err := sm.vmKeeper.QuerySmart(ctx, colAddr, []byte("{\"contract_info\":{}}")) //qreqCollectionContractInfo)
32+
rb, err := sm.vmKeeper.QuerySmart(ctx, colAddr, qreqCollectionContractInfo)
4033
if err != nil {
4134
return nil, status.Error(codes.Internal, err.Error())
4235
}

0 commit comments

Comments
 (0)