From 0789a5eed071762dea6a8b9f18056cd8d48c1c03 Mon Sep 17 00:00:00 2001 From: Adrian Brink Date: Fri, 30 Mar 2018 12:18:12 +0200 Subject: [PATCH] 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. --- client/lcd/lcd_test.go | 8 +++++++- examples/basecoin/app/app.go | 12 ++++++------ examples/basecoin/app/app_test.go | 12 +++++++----- examples/basecoin/cmd/basecoind/main.go | 8 +++++++- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/client/lcd/lcd_test.go b/client/lcd/lcd_test.go index c21884d056..609a3b0641 100644 --- a/client/lcd/lcd_test.go +++ b/client/lcd/lcd_test.go @@ -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) diff --git a/examples/basecoin/app/app.go b/examples/basecoin/app/app.go index ca235fb70f..36d140e8a4 100644 --- a/examples/basecoin/app/app.go +++ b/examples/basecoin/app/app.go @@ -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)) diff --git a/examples/basecoin/app/app_test.go b/examples/basecoin/app/app_test.go index 3767dcc392..f80836744e 100644 --- a/examples/basecoin/app/app_test.go +++ b/examples/basecoin/app/app_test.go @@ -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) } //_______________________________________________________________________ diff --git a/examples/basecoin/cmd/basecoind/main.go b/examples/basecoin/cmd/basecoind/main.go index 2c1fe851f0..8315456a35 100644 --- a/examples/basecoin/cmd/basecoind/main.go +++ b/examples/basecoin/cmd/basecoind/main.go @@ -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 }