github.com/KiraCore/sekai@v0.3.43/x/basket/keeper/grpc_query.go (about)

     1  package keeper
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/KiraCore/sekai/x/basket/types"
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  )
     9  
    10  type Querier struct {
    11  	keeper Keeper
    12  }
    13  
    14  func NewQuerier(keeper Keeper) types.QueryServer {
    15  	return &Querier{keeper: keeper}
    16  }
    17  
    18  var _ types.QueryServer = Querier{}
    19  
    20  func (q Querier) TokenBasketById(c context.Context, request *types.QueryTokenBasketByIdRequest) (*types.QueryTokenBasketByIdResponse, error) {
    21  	ctx := sdk.UnwrapSDKContext(c)
    22  	basket, err := q.keeper.GetBasketById(ctx, request.Id)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	return &types.QueryTokenBasketByIdResponse{
    27  		Basket: &basket,
    28  	}, nil
    29  }
    30  
    31  func (q Querier) TokenBasketByDenom(c context.Context, request *types.QueryTokenBasketByDenomRequest) (*types.QueryTokenBasketByDenomResponse, error) {
    32  	ctx := sdk.UnwrapSDKContext(c)
    33  	basket, err := q.keeper.GetBasketByDenom(ctx, request.Denom)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  	return &types.QueryTokenBasketByDenomResponse{
    38  		Basket: &basket,
    39  	}, nil
    40  }
    41  
    42  func (q Querier) TokenBaskets(c context.Context, request *types.QueryTokenBasketsRequest) (*types.QueryTokenBasketsResponse, error) {
    43  	ctx := sdk.UnwrapSDKContext(c)
    44  
    45  	// if `tokens` flag is set (comma separated array of strings) return
    46  	// list of all `id`'s of all the baskets that accept any of the specified `denom`’s as deposit
    47  	baskets := q.keeper.GetAllBaskets(ctx)
    48  
    49  	if len(request.Tokens) > 0 {
    50  		filtered := []types.Basket{}
    51  		for _, basket := range baskets {
    52  			if basket.DenomExists(request.Tokens) {
    53  				if request.DerivativesOnly && !basket.DerivativeBasket() {
    54  					continue
    55  				}
    56  				filtered = append(filtered, basket)
    57  			}
    58  		}
    59  		return &types.QueryTokenBasketsResponse{
    60  			Baskets: filtered,
    61  		}, nil
    62  	}
    63  
    64  	return &types.QueryTokenBasketsResponse{
    65  		Baskets: baskets,
    66  	}, nil
    67  }
    68  
    69  func (q Querier) BaksetHistoricalMints(c context.Context, request *types.QueryBasketHistoricalMintsRequest) (*types.QueryBasketHistoricalMintsResponse, error) {
    70  	ctx := sdk.UnwrapSDKContext(c)
    71  	basket, err := q.keeper.GetBasketById(ctx, request.BasketId)
    72  	if err != nil {
    73  		return nil, err
    74  	}
    75  
    76  	return &types.QueryBasketHistoricalMintsResponse{
    77  		Amount: q.keeper.GetLimitsPeriodMintAmount(ctx, request.BasketId, basket.LimitsPeriod),
    78  	}, nil
    79  }
    80  
    81  func (q Querier) BaksetHistoricalBurns(c context.Context, request *types.QueryBasketHistoricalBurnsRequest) (*types.QueryBasketHistoricalBurnsResponse, error) {
    82  	ctx := sdk.UnwrapSDKContext(c)
    83  	basket, err := q.keeper.GetBasketById(ctx, request.BasketId)
    84  	if err != nil {
    85  		return nil, err
    86  	}
    87  
    88  	return &types.QueryBasketHistoricalBurnsResponse{
    89  		Amount: q.keeper.GetLimitsPeriodBurnAmount(ctx, request.BasketId, basket.LimitsPeriod),
    90  	}, nil
    91  }
    92  
    93  func (q Querier) BaksetHistoricalSwaps(c context.Context, request *types.QueryBasketHistoricalSwapsRequest) (*types.QueryBasketHistoricalSwapsResponse, error) {
    94  	ctx := sdk.UnwrapSDKContext(c)
    95  	basket, err := q.keeper.GetBasketById(ctx, request.BasketId)
    96  	if err != nil {
    97  		return nil, err
    98  	}
    99  
   100  	return &types.QueryBasketHistoricalSwapsResponse{
   101  		Amount: q.keeper.GetLimitsPeriodSwapAmount(ctx, request.BasketId, basket.LimitsPeriod),
   102  	}, nil
   103  }