@cryptotaxi247 / kubo / commits / fe42bf9ca

Initial badger ds support

License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>

Łukasz Magiera committed Jun 19, 2017 at 16:43 UTC fe42bf9ca94444d5565124ad909d3b8d8d0ff174
1 file changed +22 -1
repo/fsrepo/datastores.go
+22 -1
@@ -9,12 +9,16 @@ import (
9
10 repo "github.com/ipfs/go-ipfs/repo"
11
12 - levelds "gx/ipfs/QmPdvXuXWAR6gtxxqZw42RtSADMwz4ijVmYHGS542b6cMz/go-ds-leveldb"
12 measure "gx/ipfs/QmSb95iHExSSb47zpmyn5CyY5PZidVWSjyKyDqgYQrnKor/go-ds-measure"
13 flatfs "gx/ipfs/QmUTshC2PP4ZDqkrFfDU4JGJFMWjYnunxPgkQ6ZCA2hGqh/go-ds-flatfs"
14 +
15 ds "gx/ipfs/QmVSase1JP7cq9QkPT46oNwdp9pT6kBkG3oqS14y3QcZjG/go-datastore"
16 mount "gx/ipfs/QmVSase1JP7cq9QkPT46oNwdp9pT6kBkG3oqS14y3QcZjG/go-datastore/syncmount"
17 +
18 + badgerds "github.com/ipfs/go-ds-badger"
19 + levelds "gx/ipfs/QmPdvXuXWAR6gtxxqZw42RtSADMwz4ijVmYHGS542b6cMz/go-ds-leveldb"
20 ldbopts "gx/ipfs/QmbBhyDKsY4mbY6xsKt3qu9Y7FPvMJ6qbD8AMjYYvPRw1g/goleveldb/leveldb/opt"
21 + "os"
22 )
23
24 // ConfigFromMap creates a new datastore config from a map
@@ -333,3 +337,20 @@ func (c measureDatastoreConfig) Create(path string) (repo.Datastore, error) {
337 }
338 return measure.New(c.prefix, child), nil
339 }
340 +
341 +func (r *FSRepo) openBadgerDatastore(params map[string]interface{}) (repo.Datastore, error) {
342 + p, ok := params["path"].(string)
343 + if !ok {
344 + return nil, fmt.Errorf("'path' field is missing or not string")
345 + }
346 + if !filepath.IsAbs(p) {
347 + p = filepath.Join(r.path, p)
348 + }
349 +
350 + err := os.MkdirAll(p, 0755)
351 + if err != nil {
352 + return nil, err
353 + }
354 +
355 + return badgerds.NewDatastore(p, nil)
356 +}