github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/cmd/fbchaind/base/db.go (about) 1 package base 2 3 import ( 4 "fmt" 5 "strings" 6 7 dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 8 ) 9 10 const ( 11 AppDBName = "application.db" 12 ) 13 14 func OpenDB(dir string, backend dbm.BackendType) (db dbm.DB, err error) { 15 switch { 16 case strings.HasSuffix(dir, ".db"): 17 dir = dir[:len(dir)-3] 18 case strings.HasSuffix(dir, ".db/"): 19 dir = dir[:len(dir)-4] 20 default: 21 return nil, fmt.Errorf("database directory must end with .db") 22 } 23 //doesn't work on windows! 24 cut := strings.LastIndex(dir, "/") 25 if cut == -1 { 26 return nil, fmt.Errorf("cannot cut paths on %s", dir) 27 } 28 defer func() { 29 if r := recover(); r != nil { 30 err = fmt.Errorf("couldn't create db: %v", r) 31 } 32 }() 33 name := dir[cut+1:] 34 db = dbm.NewDB(name, backend, dir[:cut]) 35 return db, nil 36 }