Skip to content

Commit

Permalink
Initial badger ds support
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Łukasz Magiera <[email protected]>
  • Loading branch information
magik6k committed Jun 26, 2017
1 parent dd93cd8 commit 8525be5
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions repo/fsrepo/datastores.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package fsrepo

import (
"fmt"
"os"
"path/filepath"

repo "github.com/ipfs/go-ipfs/repo"
Expand All @@ -12,6 +13,7 @@ import (
ds "gx/ipfs/QmRWDav6mzWseLWeYfVd5fvUKiVe9xNH29YfMF438fG364/go-datastore"
mount "gx/ipfs/QmRWDav6mzWseLWeYfVd5fvUKiVe9xNH29YfMF438fG364/go-datastore/syncmount"

badgerds "github.com/ipfs/go-ds-badger"
levelds "gx/ipfs/QmaHHmfEozrrotyhyN44omJouyuEtx6ahddqV6W5yRaUSQ/go-ds-leveldb"
ldbopts "gx/ipfs/QmbBhyDKsY4mbY6xsKt3qu9Y7FPvMJ6qbD8AMjYYvPRw1g/goleveldb/leveldb/opt"
)
Expand Down Expand Up @@ -62,6 +64,8 @@ func (r *FSRepo) constructDatastore(params map[string]interface{}) (repo.Datasto

case "levelds":
return r.openLeveldbDatastore(params)
case "badgerds":
return r.openBadgerDatastore(params)
default:
return nil, fmt.Errorf("unknown datastore type: %s", params["type"])
}
Expand Down Expand Up @@ -141,6 +145,23 @@ func (r *FSRepo) openLeveldbDatastore(params map[string]interface{}) (repo.Datas
})
}

func (r *FSRepo) openBadgerDatastore(params map[string]interface{}) (repo.Datastore, error) {
p, ok := params["path"].(string)
if !ok {
return nil, fmt.Errorf("'path' field is missing or not string")
}
if !filepath.IsAbs(p) {
p = filepath.Join(r.path, p)
}

err := os.MkdirAll(p, 0755)
if err != nil {
return nil, err
}

return badgerds.NewDatastore(p, nil)
}

func (r *FSRepo) openMeasureDB(prefix string, child repo.Datastore) (repo.Datastore, error) {
return measure.New(prefix, child), nil
}

0 comments on commit 8525be5

Please sign in to comment.