Skip to content

Commit dd85dc4

Browse files
committed
Remove NumTokens query handlers and associated code from NFT query service
- Deleted request and local_request functions for NumTokens. - Removed HTTP handler registration for NumTokens in both server and client. - Cleaned up related patterns and forwarding functions.
1 parent c5ed2f8 commit dd85dc4

File tree

5 files changed

+87
-600
lines changed

5 files changed

+87
-600
lines changed

proto/bitsong/nft/v1beta1/query.proto

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ service Query {
2222
option (google.api.http).get = "/bitsong/nft/v1beta1/collections/{collection}/{token_id}/owner";
2323
}
2424

25-
rpc NumTokens(QueryNumTokensRequest) returns (QueryNumTokensResponse) {
26-
option (cosmos.query.v1.module_query_safe) = true;
27-
option (google.api.http).get = "/bitsong/nft/v1beta1/collections/{collection}/num_tokens";
28-
}
29-
3025
rpc NftInfo(QueryNftInfoRequest) returns (QueryNftInfoResponse) {
3126
option (cosmos.query.v1.module_query_safe) = true;
3227
option (google.api.http).get = "/bitsong/nft/v1beta1/collections/{collection}/{token_id}";
@@ -41,6 +36,12 @@ service Query {
4136
option (cosmos.query.v1.module_query_safe) = true;
4237
option (google.api.http).get = "/bitsong/nft/v1beta1/nfts_by_owner/{owner}";
4338
}
39+
40+
// Edition returns a specific edition of an nft
41+
// OwnerOfEdition returns the owner of a specific edition
42+
// NumEditions returns the total number of editions
43+
// NftEditions returns all editions of a specific nft
44+
// AllNftEditionsByOwner returns all nft editions owned by the owner
4445
}
4546

4647
message QueryCollectionRequest {
@@ -72,20 +73,6 @@ message QueryOwnerOfResponse {
7273
string owner = 1;
7374
}
7475

75-
message QueryNumTokensRequest {
76-
option (gogoproto.equal) = false;
77-
option (gogoproto.goproto_getters) = false;
78-
79-
string collection = 1;
80-
}
81-
82-
message QueryNumTokensResponse {
83-
option (gogoproto.equal) = false;
84-
option (gogoproto.goproto_getters) = false;
85-
86-
uint64 count = 1;
87-
}
88-
8976
message QueryNftInfoRequest {
9077
option (gogoproto.equal) = false;
9178
option (gogoproto.goproto_getters) = false;

x/nft/keeper/grpc_query.go

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -65,23 +65,6 @@ func (k Keeper) OwnerOf(ctx context.Context, req *types.QueryOwnerOfRequest) (*t
6565
}, nil
6666
}
6767

68-
func (k Keeper) NumTokens(ctx context.Context, req *types.QueryNumTokensRequest) (*types.QueryNumTokensResponse, error) {
69-
if req == nil {
70-
return nil, status.Error(codes.InvalidArgument, "empty request")
71-
}
72-
if req.Collection == "" {
73-
return nil, status.Error(codes.InvalidArgument, "collection cannot be empty")
74-
}
75-
76-
sdkCtx := sdk.UnwrapSDKContext(ctx)
77-
78-
supply := k.GetSupply(sdkCtx, req.Collection)
79-
80-
return &types.QueryNumTokensResponse{
81-
Count: supply.Uint64(),
82-
}, nil
83-
}
84-
8568
func (k Keeper) NftInfo(ctx context.Context, req *types.QueryNftInfoRequest) (*types.QueryNftInfoResponse, error) {
8669
if req == nil {
8770
return nil, status.Error(codes.InvalidArgument, "empty request")
@@ -133,6 +116,36 @@ func (k Keeper) Nfts(ctx context.Context, req *types.QueryNftsRequest) (*types.Q
133116
}, nil
134117
}
135118

119+
func (k Keeper) GetNftsByOwner(ctx context.Context, owner sdk.AccAddress, pagination *query.PageRequest) ([]types.Nft, *query.PageResponse, error) {
120+
var nfts []types.Nft
121+
122+
sdkCtx := sdk.UnwrapSDKContext(ctx)
123+
124+
store := prefix.NewStore(
125+
sdkCtx.KVStore(k.storeKey),
126+
append(types.NFTsByOwnerPrefix, address.MustLengthPrefix(owner)...),
127+
)
128+
129+
pageRes, err := query.Paginate(store, pagination, func(key []byte, value []byte) error {
130+
denom, tokenId := types.MustSplitNftLengthPrefixedKey(key)
131+
132+
nft, err := k.NFTs.Get(ctx, collections.Join(string(denom), string(tokenId)))
133+
if err != nil {
134+
return err
135+
}
136+
137+
nfts = append(nfts, nft)
138+
139+
return nil
140+
})
141+
142+
if err != nil {
143+
return nil, nil, err
144+
}
145+
146+
return nfts, pageRes, nil
147+
}
148+
136149
func (k Keeper) AllNftsByOwner(ctx context.Context, req *types.QueryAllNftsByOwnerRequest) (*types.QueryAllNftsByOwnerResponse, error) {
137150
if req == nil {
138151
return nil, status.Error(codes.InvalidArgument, "empty request")
@@ -169,16 +182,6 @@ func (k Keeper) AllNftsByOwner(ctx context.Context, req *types.QueryAllNftsByOwn
169182
return nil, status.Error(codes.Internal, err.Error())
170183
}
171184

172-
/*iter, err := k.NFTs.Indexes.Owner.MatchExact(ctx, owner)
173-
if err != nil {
174-
return nil, status.Error(codes.Internal, err.Error())
175-
}
176-
defer iter.Close()
177-
178-
nfts, err := indexes.CollectValues(ctx, k.NFTs, iter)
179-
if err != nil {
180-
return nil, status.Error(codes.Internal, err.Error())
181-
}*/
182185
return &types.QueryAllNftsByOwnerResponse{
183186
Nfts: nfts,
184187
Pagination: pageRes,

x/nft/keeper/grpc_query_test.go

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -59,58 +59,6 @@ func (suite *KeeperTestSuite) TestQueryOwnerOf() {
5959
suite.Equal(owner1.String(), res.Owner)
6060
}
6161

62-
func (suite *KeeperTestSuite) TestQueryNumTokens() {
63-
collectionDenom, err := suite.keeper.CreateCollection(
64-
suite.ctx,
65-
creator1,
66-
minter1,
67-
testCollection1.Symbol,
68-
testCollection1.Name,
69-
testCollection1.Description,
70-
testCollection1.Uri,
71-
)
72-
suite.NoError(err)
73-
74-
supply := suite.keeper.GetSupply(suite.ctx, collectionDenom)
75-
suite.Equal(uint64(0), supply.Uint64())
76-
77-
err = suite.keeper.MintNFT(
78-
suite.ctx,
79-
minter1,
80-
owner1,
81-
collectionDenom,
82-
testNft1.TokenId,
83-
testNft1.Name,
84-
testNft1.Description,
85-
testNft1.Uri,
86-
)
87-
suite.NoError(err)
88-
89-
supply = suite.keeper.GetSupply(suite.ctx, collectionDenom)
90-
suite.Equal(uint64(1), supply.Uint64())
91-
92-
err = suite.keeper.MintNFT(
93-
suite.ctx,
94-
minter1,
95-
owner1,
96-
collectionDenom,
97-
testNft2.TokenId,
98-
testNft2.Name,
99-
testNft2.Description,
100-
testNft2.Uri,
101-
)
102-
suite.NoError(err)
103-
104-
supply = suite.keeper.GetSupply(suite.ctx, collectionDenom)
105-
suite.Equal(uint64(2), supply.Uint64())
106-
107-
res, err := suite.keeper.NumTokens(suite.ctx, &types.QueryNumTokensRequest{
108-
Collection: collectionDenom,
109-
})
110-
suite.NoError(err)
111-
suite.Equal(uint64(2), res.Count)
112-
}
113-
11462
func (suite *KeeperTestSuite) TestQueryNftInfo() {
11563
collectionDenom, err := suite.keeper.CreateCollection(
11664
suite.ctx,

0 commit comments

Comments
 (0)