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