Skip to content

Commit

Permalink
Fix auto create db dir (#123)
Browse files Browse the repository at this point in the history
* 1. adding util existing check func

* 2. make bbolt.Open() auto create db dir if not exist

* 3. adding test for that

* 4. modify example for it
  • Loading branch information
Shane-XB-Qian authored Apr 21, 2024
1 parent e6a58d6 commit a86f693
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
3 changes: 3 additions & 0 deletions db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,9 @@ func TestOpenExisting(t *testing.T) {
defer os.RemoveAll(dir)
require.NoError(t, err)

err = os.RemoveAll(dir)
require.NoError(t, err)

db, err := c.Open(dir)
require.NoError(t, err)

Expand Down
2 changes: 2 additions & 0 deletions examples/collections/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package main
import (
"fmt"
"log"
"os"

c "github.com/ostafen/clover/v2"
)

func main() {
_ = os.RemoveAll("clover-db")
db, err := c.Open("clover-db")
if err != nil {
log.Panicf("Failed to open db: %v", err)
Expand Down
12 changes: 12 additions & 0 deletions store/bbolt/bbolt.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package bbolt

import (
"bytes"
"os"
"path/filepath"

"github.com/ostafen/clover/v2/store"
"github.com/ostafen/clover/v2/util"
"go.etcd.io/bbolt"
)

Expand All @@ -18,6 +20,16 @@ const (
)

func Open(dir string) (store.Store, error) {
dirExists, err := util.PathExists(dir)
if err != nil {
return nil, err
}
if !dirExists {
err = os.MkdirAll(dir, 0700)
if err != nil {
return nil, err
}
}
db, err := bbolt.Open(filepath.Join(dir, dbFileName), 0600, nil)
if err != nil {
return nil, err
Expand Down
14 changes: 14 additions & 0 deletions util/fs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package util

import "os"

func PathExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return true, err
}

0 comments on commit a86f693

Please sign in to comment.