github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/mint/internal/keeper/querier.go (about)

     1  package keeper
     2  
     3  import (
     4  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     5  
     6  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     7  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     8  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/mint/internal/types"
    10  )
    11  
    12  // NewQuerier returns a minting Querier handler.
    13  func NewQuerier(k Keeper) sdk.Querier {
    14  	return func(ctx sdk.Context, path []string, _ abci.RequestQuery) ([]byte, error) {
    15  		switch path[0] {
    16  		case types.QueryParameters:
    17  			return queryParams(ctx, k)
    18  		case types.QueryTreasures:
    19  			return queryTreasures(ctx, k)
    20  		case types.QueryBlockRewards:
    21  			return queryBlockRewards(ctx, k)
    22  		default:
    23  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0])
    24  		}
    25  	}
    26  }
    27  
    28  func queryTreasures(ctx sdk.Context, k Keeper) ([]byte, error) {
    29  	treasures := k.GetTreasures(ctx)
    30  	res, err := codec.MarshalJSONIndent(k.cdc, treasures)
    31  	if err != nil {
    32  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    33  	}
    34  
    35  	return res, nil
    36  }
    37  func queryParams(ctx sdk.Context, k Keeper) ([]byte, error) {
    38  	params := k.GetParams(ctx)
    39  
    40  	res, err := codec.MarshalJSONIndent(k.cdc, params)
    41  	if err != nil {
    42  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    43  	}
    44  
    45  	return res, nil
    46  }
    47  
    48  func queryBlockRewards(ctx sdk.Context, k Keeper) ([]byte, error) {
    49  	minter := k.GetMinterCustom(ctx)
    50  	params := k.GetParams(ctx)
    51  
    52  	farmingAmount := minter.MintedPerBlock.MulDecTruncate(params.FarmProportion)
    53  	blockAmount := minter.MintedPerBlock.Sub(farmingAmount)
    54  
    55  	res, err := codec.MarshalJSONIndent(k.cdc, types.MinterCustom{
    56  		MintedPerBlock:    blockAmount,
    57  		NextBlockToUpdate: minter.NextBlockToUpdate,
    58  	})
    59  	if err != nil {
    60  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    61  	}
    62  
    63  	return res, nil
    64  }
    65  
    66  func queryInflation(ctx sdk.Context, k Keeper) ([]byte, error) {
    67  	minter := k.GetMinter(ctx)
    68  
    69  	res, err := codec.MarshalJSONIndent(k.cdc, minter.Inflation)
    70  	if err != nil {
    71  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    72  	}
    73  
    74  	return res, nil
    75  }
    76  
    77  func queryAnnualProvisions(ctx sdk.Context, k Keeper) ([]byte, error) {
    78  	minter := k.GetMinter(ctx)
    79  
    80  	res, err := codec.MarshalJSONIndent(k.cdc, minter.AnnualProvisions)
    81  	if err != nil {
    82  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    83  	}
    84  
    85  	return res, nil
    86  }