github.com/tendermint/tmlibs@v0.9.0/db/db.go (about) 1 package db 2 3 import "fmt" 4 5 //---------------------------------------- 6 // Main entry 7 8 type DBBackendType string 9 10 const ( 11 LevelDBBackend DBBackendType = "leveldb" // legacy, defaults to goleveldb unless +gcc 12 CLevelDBBackend DBBackendType = "cleveldb" 13 GoLevelDBBackend DBBackendType = "goleveldb" 14 MemDBBackend DBBackendType = "memdb" 15 FSDBBackend DBBackendType = "fsdb" // using the filesystem naively 16 ) 17 18 type dbCreator func(name string, dir string) (DB, error) 19 20 var backends = map[DBBackendType]dbCreator{} 21 22 func registerDBCreator(backend DBBackendType, creator dbCreator, force bool) { 23 _, ok := backends[backend] 24 if !force && ok { 25 return 26 } 27 backends[backend] = creator 28 } 29 30 func NewDB(name string, backend DBBackendType, dir string) DB { 31 db, err := backends[backend](name, dir) 32 if err != nil { 33 panic(fmt.Sprintf("Error initializing DB: %v", err)) 34 } 35 return db 36 }