github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/upgrade/internal/keeper/querier.go (about) 1 package keeper 2 3 import ( 4 "encoding/binary" 5 6 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 7 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/upgrade/internal/types" 11 ) 12 13 // NewQuerier creates a querier for upgrade cli and REST endpoints 14 func NewQuerier(k Keeper) sdk.Querier { 15 return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) { 16 switch path[0] { 17 18 case types.QueryCurrent: 19 return queryCurrent(ctx, req, k) 20 21 case types.QueryApplied: 22 return queryApplied(ctx, req, k) 23 24 default: 25 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unknown %s query endpoint: %s", types.ModuleName, path[0]) 26 } 27 } 28 } 29 30 func queryCurrent(ctx sdk.Context, req abci.RequestQuery, k Keeper) ([]byte, error) { 31 plan, has := k.GetUpgradePlan(ctx) 32 if !has { 33 return nil, nil 34 } 35 36 res, err := k.cdc.MarshalJSON(&plan) 37 if err != nil { 38 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error()) 39 } 40 41 return res, nil 42 } 43 44 func queryApplied(ctx sdk.Context, req abci.RequestQuery, k Keeper) ([]byte, error) { 45 var params types.QueryAppliedParams 46 47 err := k.cdc.UnmarshalJSON(req.Data, ¶ms) 48 if err != nil { 49 return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) 50 } 51 52 applied := k.GetDoneHeight(ctx, params.Name) 53 if applied == 0 { 54 return nil, nil 55 } 56 57 bz := make([]byte, 8) 58 binary.BigEndian.PutUint64(bz, uint64(applied)) 59 60 return bz, nil 61 }