You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

36 lines
884 B

package db
import "fmt"
//----------------------------------------
// Main entry
type dbBackendType string
const (
LevelDBBackend dbBackendType = "leveldb" // legacy, defaults to goleveldb unless +gcc
CLevelDBBackend dbBackendType = "cleveldb"
GoLevelDBBackend dbBackendType = "goleveldb"
MemDBBackend dbBackendType = "memdb"
FSDBBackend dbBackendType = "fsdb" // using the filesystem naively
)
type dbCreator func(name string, dir string) (DB, error)
var backends = map[dbBackendType]dbCreator{}
func registerDBCreator(backend dbBackendType, creator dbCreator, force bool) {
_, ok := backends[backend]
if !force && ok {
return
}
backends[backend] = creator
}
func NewDB(name string, backend dbBackendType, dir string) DB {
db, err := backends[backend](name, dir)
if err != nil {
panic(fmt.Sprintf("Error initializing DB: %v", err))
}
return db
}