github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/params/querier.go (about)

     1  package params
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
     8  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
     9  
    10  	"github.com/fibonacci-chain/fbc/x/params/types"
    11  )
    12  
    13  // NewQuerier returns all query handlers
    14  func NewQuerier(keeper Keeper) sdk.Querier {
    15  	return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, sdk.Error) {
    16  		switch path[0] {
    17  		case types.QueryParams:
    18  			return queryParams(ctx, req, keeper)
    19  		case types.QueryUpgrade:
    20  			if len(path) != 2 {
    21  				keeper.Logger(ctx).Error("invalid query path", "path", path)
    22  			}
    23  			return queryUpgrade(ctx, path[1], keeper)
    24  		default:
    25  			return nil, sdk.ErrUnknownRequest("unknown params query endpoint")
    26  		}
    27  	}
    28  }
    29  
    30  func queryUpgrade(ctx sdk.Context, name string, keeper Keeper) ([]byte, sdk.Error) {
    31  	infos := make([]types.UpgradeInfo, 0)
    32  
    33  	if len(name) == 0 {
    34  		// query all upgrade info
    35  		err := keeper.iterateAllUpgradeInfo(ctx, func(info types.UpgradeInfo) (stop bool) {
    36  			infos = append(infos, info)
    37  			return false
    38  		})
    39  		if err != nil {
    40  			return nil, err
    41  		}
    42  	} else {
    43  		info, err := keeper.readUpgradeInfo(ctx, name)
    44  		if err != nil {
    45  			return nil, sdk.ErrInternal(err.Error())
    46  		}
    47  		infos = append(infos, info)
    48  	}
    49  
    50  	bz, err := codec.MarshalJSONIndent(keeper.cdc, infos)
    51  	if err != nil {
    52  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, fmt.Sprintf("could not marshal result to JSON %s", err.Error()))
    53  	}
    54  	return bz, nil
    55  }
    56  
    57  func queryParams(ctx sdk.Context, _ abci.RequestQuery, keeper Keeper) ([]byte, sdk.Error) {
    58  	bz, err := codec.MarshalJSONIndent(keeper.cdc, keeper.GetParams(ctx))
    59  	if err != nil {
    60  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, fmt.Sprintf("could not marshal result to JSON %s", err.Error()))
    61  	}
    62  	return bz, nil
    63  }