github.com/Finschia/finschia-sdk@v0.48.1/x/params/keeper/querier.go (about)

     1  package keeper
     2  
     3  import (
     4  	abci "github.com/tendermint/tendermint/abci/types"
     5  
     6  	"github.com/Finschia/finschia-sdk/codec"
     7  	sdk "github.com/Finschia/finschia-sdk/types"
     8  	sdkerrors "github.com/Finschia/finschia-sdk/types/errors"
     9  	"github.com/Finschia/finschia-sdk/x/params/types"
    10  	"github.com/Finschia/finschia-sdk/x/params/types/proposal"
    11  )
    12  
    13  // NewQuerier returns a new querier handler for the x/params module.
    14  func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier {
    15  	return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) {
    16  		switch path[0] {
    17  		case types.QueryParams:
    18  			return queryParams(ctx, req, k, legacyQuerierCdc)
    19  
    20  		default:
    21  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown query path: %s", path[0])
    22  		}
    23  	}
    24  }
    25  
    26  func queryParams(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
    27  	var params types.QuerySubspaceParams
    28  
    29  	if err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params); err != nil {
    30  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
    31  	}
    32  
    33  	ss, ok := k.GetSubspace(params.Subspace)
    34  	if !ok {
    35  		return nil, sdkerrors.Wrap(proposal.ErrUnknownSubspace, params.Subspace)
    36  	}
    37  
    38  	rawValue := ss.GetRaw(ctx, []byte(params.Key))
    39  	resp := types.NewSubspaceParamsResponse(params.Subspace, params.Key, string(rawValue))
    40  
    41  	bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, resp)
    42  	if err != nil {
    43  		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
    44  	}
    45  
    46  	return bz, nil
    47  }