diff --git a/types/module.go b/types/module.go index a707092ce4e3..ff1743a55d9f 100644 --- a/types/module.go +++ b/types/module.go @@ -78,9 +78,16 @@ func (mbm ModuleBasicManager) ValidateGenesis(genesis map[string]json.RawMessage } //_________________________________________________________ +// AppModuleGenesis is the standard form for an application module genesis functions +type AppModuleGenesis interface { + AppModuleBasic + InitGenesis(Context, json.RawMessage) []abci.ValidatorUpdate + ExportGenesis(Context) json.RawMessage +} + // AppModule is the standard form for an application module type AppModule interface { - AppModuleBasic + AppModuleGenesis // registers RegisterInvariants(InvariantRouter) @@ -91,14 +98,49 @@ type AppModule interface { QuerierRoute() string NewQuerierHandler() Querier - // genesis - InitGenesis(Context, json.RawMessage) []abci.ValidatorUpdate - ExportGenesis(Context) json.RawMessage - BeginBlock(Context, abci.RequestBeginBlock) Tags EndBlock(Context, abci.RequestEndBlock) ([]abci.ValidatorUpdate, Tags) } +//___________________________ +// app module +type GenesisOnlyAppModule struct { + AppModuleGenesis +} + +// NewGenesisOnlyAppModule creates a new GenesisOnlyAppModule object +func NewGenesisOnlyAppModule(amg AppModuleGenesis) AppModule { + return GenesisOnlyAppModule{ + AppModuleGenesis: amg, + } +} + +// register invariants +func (GenesisOnlyAppModule) RegisterInvariants(_ InvariantRouter) {} + +// module message route ngame +func (GenesisOnlyAppModule) Route() string { return "" } + +// module handler +func (GenesisOnlyAppModule) NewHandler() Handler { return nil } + +// module querier route ngame +func (GenesisOnlyAppModule) QuerierRoute() string { return "" } + +// module querier +func (gam GenesisOnlyAppModule) NewQuerierHandler() Querier { return nil } + +// module begin-block +func (gam GenesisOnlyAppModule) BeginBlock(ctx Context, req abci.RequestBeginBlock) Tags { + return EmptyTags() +} + +// module end-block +func (GenesisOnlyAppModule) EndBlock(_ Context, _ abci.RequestEndBlock) ([]abci.ValidatorUpdate, Tags) { + return []abci.ValidatorUpdate{}, EmptyTags() +} + +//____________________________________________________________________________ // module manager provides the high level utility for managing and executing // operations for a group of modules type ModuleManager struct { diff --git a/x/genaccounts/module.go b/x/genaccounts/module.go index 8e71f90f5714..2ffc0c4a51f0 100644 --- a/x/genaccounts/module.go +++ b/x/genaccounts/module.go @@ -10,8 +10,8 @@ import ( ) var ( - _ sdk.AppModule = AppModule{} - _ sdk.AppModuleBasic = AppModuleBasic{} + _ sdk.AppModuleGenesis = AppModule{} + _ sdk.AppModuleBasic = AppModuleBasic{} ) // module name @@ -66,29 +66,14 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(accountKeeper AccountKeeper) AppModule { +func NewAppModule(accountKeeper AccountKeeper) sdk.AppModule { - return AppModule{ + return sdk.NewGenesisOnlyAppModule(AppModule{ AppModuleBasic: AppModuleBasic{}, accountKeeper: accountKeeper, - } + }) } -// register invariants -func (AppModule) RegisterInvariants(_ sdk.InvariantRouter) {} - -// module message route name -func (AppModule) Route() string { return "" } - -// module handler -func (AppModule) NewHandler() sdk.Handler { return nil } - -// module querier route name -func (AppModule) QuerierRoute() string { return "" } - -// module querier -func (am AppModule) NewQuerierHandler() sdk.Querier { return nil } - // module init-genesis func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate { var genesisState GenesisState @@ -102,13 +87,3 @@ func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage { gs := ExportGenesis(ctx, am.accountKeeper) return moduleCdc.MustMarshalJSON(gs) } - -// module begin-block -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) sdk.Tags { - return sdk.EmptyTags() -} - -// module end-block -func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) ([]abci.ValidatorUpdate, sdk.Tags) { - return []abci.ValidatorUpdate{}, sdk.EmptyTags() -} diff --git a/x/genutil/module.go b/x/genutil/module.go index 028395ba5982..ba69d4f54b7e 100644 --- a/x/genutil/module.go +++ b/x/genutil/module.go @@ -9,8 +9,8 @@ import ( ) var ( - _ sdk.AppModule = AppModule{} - _ sdk.AppModuleBasic = AppModuleBasic{} + _ sdk.AppModuleGenesis = AppModule{} + _ sdk.AppModuleBasic = AppModuleBasic{} ) // module name @@ -53,31 +53,16 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule(accountKeeper AccountKeeper, - stakingKeeper StakingKeeper, deliverTx deliverTxfn) AppModule { + stakingKeeper StakingKeeper, deliverTx deliverTxfn) sdk.AppModule { - return AppModule{ + return sdk.NewGenesisOnlyAppModule(AppModule{ AppModuleBasic: AppModuleBasic{}, accountKeeper: accountKeeper, stakingKeeper: stakingKeeper, deliverTx: deliverTx, - } + }) } -// register invariants -func (AppModule) RegisterInvariants(_ sdk.InvariantRouter) {} - -// module message route name -func (AppModule) Route() string { return "" } - -// module handler -func (AppModule) NewHandler() sdk.Handler { return nil } - -// module querier route name -func (AppModule) QuerierRoute() string { return "" } - -// module querier -func (am AppModule) NewQuerierHandler() sdk.Querier { return nil } - // module init-genesis func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate { var genesisState GenesisState @@ -89,13 +74,3 @@ func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.Va func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage { return nil } - -// module begin-block -func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) sdk.Tags { - return sdk.EmptyTags() -} - -// module end-block -func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) ([]abci.ValidatorUpdate, sdk.Tags) { - return []abci.ValidatorUpdate{}, sdk.EmptyTags() -}