Skip to content

Commit

Permalink
Receive arg as Query String in Req
Browse files Browse the repository at this point in the history
  • Loading branch information
Kbhat1 committed Jun 14, 2024
1 parent bf9783f commit 9ceea4d
Show file tree
Hide file tree
Showing 4 changed files with 578 additions and 90 deletions.
20 changes: 19 additions & 1 deletion proto/cosmos/bank/v1beta1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ service Query {

// SupplyOf queries the supply of a single coin.
rpc SupplyOf(QuerySupplyOfRequest) returns (QuerySupplyOfResponse) {
option (google.api.http).get = "/cosmos/bank/v1beta1/supply/{denom}";
option (google.api.http).get = "/cosmos/bank/v1beta1/supply/by_denom";
}

// Params queries the parameters of x/bank module.
Expand All @@ -47,6 +47,10 @@ service Query {
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata/{denom}";
}

rpc DenomMetadataByQueryString(QueryDenomMetadataByQueryStringRequest) returns (QueryDenomMetadataByQueryStringResponse) {
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata_by_query_string";
}

// DenomsMetadata queries the client metadata for all registered coin denominations.
rpc DenomsMetadata(QueryDenomsMetadataRequest) returns (QueryDenomsMetadataResponse) {
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata";
Expand Down Expand Up @@ -185,9 +189,23 @@ message QueryDenomMetadataRequest {
string denom = 1;
}

// QueryDenomMetadataByQueryStringRequest is the request type for the Query/DenomMetadata RPC method.
// Identical with QueryDenomMetadataRequest but receives denom as query string.
message QueryDenomMetadataByQueryStringRequest {
// denom is the coin denom to query the metadata for.
string denom = 1;
}

// QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC
// method.
message QueryDenomMetadataResponse {
// metadata describes and provides all the client information for the requested token.
Metadata metadata = 1 [(gogoproto.nullable) = false];
}

// QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC
// method. Identical with QueryDenomMetadataResponse but receives denom as query string in request.
message QueryDenomMetadataByQueryStringResponse {
// metadata describes and provides all the client information for the requested token.
Metadata metadata = 1 [(gogoproto.nullable) = false];
}
16 changes: 16 additions & 0 deletions x/bank/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,19 @@ func (k BaseKeeper) DenomMetadata(c context.Context, req *types.QueryDenomMetada
Metadata: metadata,
}, nil
}

// DenomMetadataByQueryString is identical to DenomMetadata query, but receives request via query string.
func (k BaseKeeper) DenomMetadataByQueryString(ctx context.Context, req *types.QueryDenomMetadataByQueryStringRequest) (*types.QueryDenomMetadataByQueryStringResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}

res, err := k.DenomMetadata(ctx, &types.QueryDenomMetadataRequest{
Denom: req.Denom,
})
if err != nil {
return nil, err
}

return &types.QueryDenomMetadataByQueryStringResponse{Metadata: res.Metadata}, nil
}
Loading

0 comments on commit 9ceea4d

Please sign in to comment.