package db import . "github.com/tendermint/go-common" type DB interface { Get([]byte) []byte Set([]byte, []byte) SetSync([]byte, []byte) Delete([]byte) DeleteSync([]byte) Close() NewBatch() Batch // For debugging Print() } type Batch interface { Set(key, value []byte) Delete(key []byte) Write() } //----------------------------------------------------------------------------- const ( CLevelDBBackendStr = "goleveldb" GoLevelDBBackendStr = "cleveldb" MemDBBackendStr = "memdb" ) type dbCreator func(name string, dir string) (DB, error) var backends map[string]dbCreator func registerDBCreator(backend string, creator dbCreator, force bool) { _, ok := backends[backend] if !force && ok { return } backends[backend] = creator } func NewDB(name string, backend string, dir string) DB { db, err := backends[backend](name, dir) if err != nil { PanicSanity(Fmt("Error initializing DB: %v", err)) } return db }