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