NewBasecoinApp takes a map of databases

NewBasecoinApp takes a map[string]dbm.DB . This stabilises the API,
since it allows us to add more stores without a breaking change. The
convention is that the keys of the dbs correspond to the names of the
capKeys.
This commit is contained in:
Adrian Brink 2018-03-30 12:18:12 +02:00
parent fcc8a9a415
commit 0789a5eed0
No known key found for this signature in database
GPG Key ID: F61053D3FBD06353
4 changed files with 27 additions and 13 deletions

View File

@ -315,7 +315,13 @@ func startTMAndLCD() (*nm.Node, net.Listener, error) {
logger = log.NewFilter(logger, log.AllowError())
privValidatorFile := config.PrivValidatorFile()
privVal := tmtypes.LoadOrGenPrivValidatorFS(privValidatorFile)
app := bapp.NewBasecoinApp(logger, dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB(), dbm.NewMemDB())
dbs := map[string]dbm.DB{
"main": dbm.NewMemDB(),
"acc": dbm.NewMemDB(),
"ibc": dbm.NewMemDB(),
"staking": dbm.NewMemDB(),
}
app := bapp.NewBasecoinApp(logger, dbs)
genesisFile := config.GenesisFile()
genDoc, err := tmtypes.GenesisDocFromFile(genesisFile)

View File

@ -40,10 +40,10 @@ type BasecoinApp struct {
accountMapper sdk.AccountMapper
}
func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) *BasecoinApp {
func NewBasecoinApp(logger log.Logger, dbs map[string]dbm.DB) *BasecoinApp {
// create your application object
var app = &BasecoinApp{
BaseApp: bam.NewBaseApp(appName, logger, dbMain),
BaseApp: bam.NewBaseApp(appName, logger, dbs["main"]),
cdc: MakeCodec(),
capKeyMainStore: sdk.NewKVStoreKey("main"),
capKeyAccountStore: sdk.NewKVStoreKey("acc"),
@ -71,10 +71,10 @@ func NewBasecoinApp(logger log.Logger, dbMain, dbAcc, dbIBC, dbStaking dbm.DB) *
// initialize BaseApp
app.SetTxDecoder(app.txDecoder)
app.SetInitChainer(app.initChainer)
app.MountStoreWithDB(app.capKeyMainStore, sdk.StoreTypeIAVL, dbMain)
app.MountStoreWithDB(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbAcc)
app.MountStoreWithDB(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbIBC)
app.MountStoreWithDB(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbStaking)
app.MountStoreWithDB(app.capKeyMainStore, sdk.StoreTypeIAVL, dbs["main"])
app.MountStoreWithDB(app.capKeyAccountStore, sdk.StoreTypeIAVL, dbs["acc"])
app.MountStoreWithDB(app.capKeyIBCStore, sdk.StoreTypeIAVL, dbs["ibc"])
app.MountStoreWithDB(app.capKeyStakingStore, sdk.StoreTypeIAVL, dbs["staking"])
// NOTE: Broken until #532 lands
//app.MountStoresIAVL(app.capKeyMainStore, app.capKeyIBCStore, app.capKeyStakingStore)
app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper))

View File

@ -68,11 +68,13 @@ var (
func newBasecoinApp() *BasecoinApp {
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "sdk/app")
dbMain := dbm.NewMemDB()
dbAcc := dbm.NewMemDB()
dbIBC := dbm.NewMemDB()
dbStaking := dbm.NewMemDB()
return NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking)
dbs := map[string]dbm.DB{
"main": dbm.NewMemDB(),
"acc": dbm.NewMemDB(),
"ibc": dbm.NewMemDB(),
"staking": dbm.NewMemDB(),
}
return NewBasecoinApp(logger, dbs)
}
//_______________________________________________________________________

View File

@ -67,7 +67,13 @@ func generateApp(rootDir string, logger log.Logger) (abci.Application, error) {
if err != nil {
return nil, err
}
bapp := app.NewBasecoinApp(logger, dbMain, dbAcc, dbIBC, dbStaking)
dbs := map[string]dbm.DB{
"main": dbMain,
"acc": dbAcc,
"ibc": dbIBC,
"staking": dbStaking,
}
bapp := app.NewBasecoinApp(logger, dbs)
return bapp, nil
}