Skip to content

Commit

Permalink
fix: proto query fixed (#2215)
Browse files Browse the repository at this point in the history
* proto query fixed

* make proto-all

---------

Co-authored-by: toteki <[email protected]>
  • Loading branch information
kosegor and toteki authored Aug 30, 2023
1 parent ce3ce08 commit 8f263f8
Show file tree
Hide file tree
Showing 6 changed files with 191 additions and 200 deletions.
8 changes: 4 additions & 4 deletions proto/umee/metoken/v1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ message QueryIndexesResponse {

// QuerySwapFee defines the request structure for the SwapFee gRPC service handler.
message QuerySwapFee {
cosmos.base.v1beta1.Coin asset = 1 [(gogoproto.nullable) = false];
string metoken_denom = 2;
string asset = 1;
string metoken_denom = 2;
}

// QuerySwapFeeResponse defines the response structure for the SwapFee gRPC service handler.
Expand All @@ -84,8 +84,8 @@ message QuerySwapFeeResponse {

// QueryRedeemFee defines the request structure for the RedeemFee gRPC service handler.
message QueryRedeemFee {
cosmos.base.v1beta1.Coin metoken = 1 [(gogoproto.nullable) = false];
string asset_denom = 2;
string metoken = 1;
string asset_denom = 2;
}

// QueryRedeemFeeResponse defines the response structure for the RedeemFee gRPC service handler.
Expand Down
158 changes: 75 additions & 83 deletions swagger/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1805,74 +1805,6 @@ paths:
format: byte
tags:
- Query
/umee/oracle/v1/valdiators/{validator_addr}/aggregate_vote:
get:
summary: AggregateVote returns an aggregate vote of a validator
operationId: AggregateVote
responses:
'200':
description: A successful response.
schema:
type: object
properties:
aggregate_vote:
title: >-
aggregate_vote defines oracle aggregate vote submitted by a
validator in
the current vote period
type: object
properties:
exchange_rate_tuples:
type: array
items:
type: object
properties:
denom:
type: string
exchange_rate:
type: string
title: >-
ExchangeRateTuple - struct to store interpreted exchange
rates data to store
voter:
type: string
description: |-
AggregateExchangeRateVote - struct for voting on
the exchange rates of USD denominated in various assets.
description: |-
QueryAggregateVoteResponse is response type for the
Query/AggregateVote RPC method.
default:
description: An unexpected error response.
schema:
type: object
properties:
error:
type: string
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
type: object
properties:
type_url:
type: string
value:
type: string
format: byte
parameters:
- name: validator_addr
description: validator defines the validator address to query for.
in: path
required: true
type: string
tags:
- Query
/umee/oracle/v1/validators/aggregate_prevotes:
get:
summary: AggregatePrevotes returns aggregate prevotes of all validators
Expand Down Expand Up @@ -2066,6 +1998,74 @@ paths:
type: string
tags:
- Query
/umee/oracle/v1/validators/{validator_addr}/aggregate_vote:
get:
summary: AggregateVote returns an aggregate vote of a validator
operationId: AggregateVote
responses:
'200':
description: A successful response.
schema:
type: object
properties:
aggregate_vote:
type: object
properties:
exchange_rate_tuples:
type: array
items:
type: object
properties:
denom:
type: string
exchange_rate:
type: string
title: >-
ExchangeRateTuple - struct to store interpreted exchange
rates data to store
voter:
type: string
description: |-
AggregateExchangeRateVote - struct for voting on
the exchange rates of USD denominated in various assets.
title: >-
aggregate_vote defines oracle aggregate vote submitted by a
validator in
the current vote period
description: |-
QueryAggregateVoteResponse is response type for the
Query/AggregateVote RPC method.
default:
description: An unexpected error response.
schema:
type: object
properties:
error:
type: string
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
type: object
properties:
type_url:
type: string
value:
type: string
format: byte
parameters:
- name: validator_addr
description: validator defines the validator address to query for.
in: path
required: true
type: string
tags:
- Query
/umee/oracle/v1/validators/{validator_addr}/feeder:
get:
summary: FeederDelegation returns feeder delegation of a validator
Expand Down Expand Up @@ -4158,11 +4158,7 @@ paths:
type: string
format: byte
parameters:
- name: metoken.denom
in: query
required: false
type: string
- name: metoken.amount
- name: metoken
in: query
required: false
type: string
Expand Down Expand Up @@ -4223,11 +4219,7 @@ paths:
type: string
format: byte
parameters:
- name: asset.denom
in: query
required: false
type: string
- name: asset.amount
- name: asset
in: query
required: false
type: string
Expand Down Expand Up @@ -5796,11 +5788,6 @@ definitions:
type: object
properties:
aggregate_vote:
title: >-
aggregate_vote defines oracle aggregate vote submitted by a validator
in
the current vote period
type: object
properties:
exchange_rate_tuples:
Expand All @@ -5820,6 +5807,11 @@ definitions:
description: |-
AggregateExchangeRateVote - struct for voting on
the exchange rates of USD denominated in various assets.
title: >-
aggregate_vote defines oracle aggregate vote submitted by a validator
in
the current vote period
description: |-
QueryAggregateVoteResponse is response type for the
Query/AggregateVote RPC method.
Expand Down
14 changes: 2 additions & 12 deletions x/metoken/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/umee-network/umee/v6/util/cli"
"github.com/umee-network/umee/v6/x/metoken"
)
Expand Down Expand Up @@ -103,11 +101,7 @@ func GetCmdSwapFee() *cobra.Command {
queryClient := metoken.NewQueryClient(clientCtx)
queryReq := metoken.QuerySwapFee{}

asset, err := sdk.ParseCoinNormalized(args[0])
if err != nil {
return err
}
queryReq.Asset = asset
queryReq.Asset = args[0]
queryReq.MetokenDenom = args[1]

resp, err := queryClient.SwapFee(cmd.Context(), &queryReq)
Expand Down Expand Up @@ -136,11 +130,7 @@ func GetCmdRedeemFee() *cobra.Command {
queryClient := metoken.NewQueryClient(clientCtx)
queryReq := metoken.QueryRedeemFee{}

metoken, err := sdk.ParseCoinNormalized(args[0])
if err != nil {
return err
}
queryReq.Metoken = metoken
queryReq.Metoken = args[0]
queryReq.AssetDenom = args[1]

resp, err := queryClient.RedeemFee(cmd.Context(), &queryReq)
Expand Down
20 changes: 15 additions & 5 deletions x/metoken/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,12 @@ func (q Querier) SwapFee(goCtx context.Context, req *metoken.QuerySwapFee) (*met
ctx := sdk.UnwrapSDKContext(goCtx)
k := q.Keeper(&ctx)

if err := req.Asset.Validate(); err != nil {
asset, err := sdk.ParseCoinNormalized(req.Asset)
if err != nil {
return nil, err
}

if err := asset.Validate(); err != nil {
return nil, err
}

Expand All @@ -67,7 +72,7 @@ func (q Querier) SwapFee(goCtx context.Context, req *metoken.QuerySwapFee) (*met
}

// calculate the fee for the asset amount
swapFee, err := k.swapFee(index, indexPrices, req.Asset)
swapFee, err := k.swapFee(index, indexPrices, asset)
if err != nil {
return nil, err
}
Expand All @@ -83,11 +88,16 @@ func (q Querier) RedeemFee(goCtx context.Context, req *metoken.QueryRedeemFee) (
ctx := sdk.UnwrapSDKContext(goCtx)
k := q.Keeper(&ctx)

if err := req.Metoken.Validate(); err != nil {
meToken, err := sdk.ParseCoinNormalized(req.Metoken)
if err != nil {
return nil, err
}

if err := meToken.Validate(); err != nil {
return nil, err
}

index, err := k.RegisteredIndex(req.Metoken.Denom)
index, err := k.RegisteredIndex(meToken.Denom)
if err != nil {
return nil, err
}
Expand All @@ -99,7 +109,7 @@ func (q Querier) RedeemFee(goCtx context.Context, req *metoken.QueryRedeemFee) (
}

// calculate amount to withdraw from x/metoken and x/leverage
amountFromReserves, amountFromLeverage, err := k.calculateRedeem(index, indexPrices, req.Metoken, req.AssetDenom)
amountFromReserves, amountFromLeverage, err := k.calculateRedeem(index, indexPrices, meToken, req.AssetDenom)
if err != nil {
return nil, err
}
Expand Down
25 changes: 14 additions & 11 deletions x/metoken/keeper/intest/grpc_query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (

"gotest.tools/v3/assert"

sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"

"github.com/umee-network/umee/v6/x/metoken"
Expand Down Expand Up @@ -132,7 +131,7 @@ func TestQuerier_Balances(t *testing.T) {

type feeTestCase struct {
name string
asset sdk.Coin
asset string
denom string
}

Expand Down Expand Up @@ -190,17 +189,17 @@ func TestQuerier_SwapFee_meUSD(t *testing.T) {
tcs := []feeTestCase{
{
name: "10 USDT swap",
asset: sdk.NewCoin(mocks.USDTBaseDenom, sdkmath.NewInt(10_000000)),
asset: "10000000" + mocks.USDTBaseDenom,
denom: mocks.MeUSDDenom,
},
{
name: "750 USDC swap",
asset: sdk.NewCoin(mocks.USDCBaseDenom, sdkmath.NewInt(750_000000)),
asset: "750000000" + mocks.USDCBaseDenom,
denom: mocks.MeUSDDenom,
},
{
name: "1876 IST swap",
asset: sdk.NewCoin(mocks.ISTBaseDenom, sdkmath.NewInt(1876_000000)),
asset: "1876000000" + mocks.ISTBaseDenom,
denom: mocks.MeUSDDenom,
},
}
Expand All @@ -210,7 +209,9 @@ func TestQuerier_SwapFee_meUSD(t *testing.T) {
Asset: tc.asset,
MetokenDenom: tc.denom,
}
denom := tc.asset.Denom
asset, err := sdk.ParseCoinNormalized(tc.asset)
assert.NilError(t, err)
denom := asset.Denom

resp, err := querier.SwapFee(ctx, req)
assert.NilError(t, err)
Expand All @@ -228,7 +229,7 @@ func TestQuerier_SwapFee_meUSD(t *testing.T) {
fee := swapDeltaAllocation.Mul(index.Fee.BalancedFee).Add(index.Fee.BalancedFee)

// swap_fee = fee * amount
result := fee.MulInt(tc.asset.Amount).TruncateInt()
result := fee.MulInt(asset.Amount).TruncateInt()

assert.Check(t, result.Equal(resp.Asset.Amount))
}
Expand All @@ -248,17 +249,17 @@ func TestQuerier_RedeemFee_meUSD(t *testing.T) {
tcs := []feeTestCase{
{
name: "20 meUSD to USDT redemption",
asset: sdk.NewCoin(mocks.MeUSDDenom, sdkmath.NewInt(20_000000)),
asset: "20000000" + mocks.MeUSDDenom,
denom: mocks.USDTBaseDenom,
},
{
name: "444 meUSD to USDC redemption",
asset: sdk.NewCoin(mocks.MeUSDDenom, sdkmath.NewInt(444_000000)),
asset: "444000000" + mocks.MeUSDDenom,
denom: mocks.USDCBaseDenom,
},
{
name: "1267 meUSD to IST redemption",
asset: sdk.NewCoin(mocks.MeUSDDenom, sdkmath.NewInt(1267_000000)),
asset: "1267000000" + mocks.MeUSDDenom,
denom: mocks.ISTBaseDenom,
},
}
Expand Down Expand Up @@ -293,7 +294,9 @@ func TestQuerier_RedeemFee_meUSD(t *testing.T) {
exchangeRate := prices.Price.Quo(price.Price)

// asset_to_redeem = exchange_rate * asset_amount
toRedeem := exchangeRate.MulInt(tc.asset.Amount).TruncateInt()
asset, err := sdk.ParseCoinNormalized(tc.asset)
assert.NilError(t, err)
toRedeem := exchangeRate.MulInt(asset.Amount).TruncateInt()

// total_fee = asset_to_redeem * fee
totalFee := fee.MulInt(toRedeem).TruncateInt()
Expand Down
Loading

0 comments on commit 8f263f8

Please sign in to comment.