From fe42bf9ca94444d5565124ad909d3b8d8d0ff174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Mon, 19 Jun 2017 16:43:11 +0200 Subject: [PATCH] Initial badger ds support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- repo/fsrepo/datastores.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/repo/fsrepo/datastores.go b/repo/fsrepo/datastores.go index 80d07decf..0ffa71d08 100644 --- a/repo/fsrepo/datastores.go +++ b/repo/fsrepo/datastores.go @@ -9,12 +9,16 @@ import ( repo "github.com/ipfs/go-ipfs/repo" - levelds "gx/ipfs/QmPdvXuXWAR6gtxxqZw42RtSADMwz4ijVmYHGS542b6cMz/go-ds-leveldb" measure "gx/ipfs/QmSb95iHExSSb47zpmyn5CyY5PZidVWSjyKyDqgYQrnKor/go-ds-measure" flatfs "gx/ipfs/QmUTshC2PP4ZDqkrFfDU4JGJFMWjYnunxPgkQ6ZCA2hGqh/go-ds-flatfs" + ds "gx/ipfs/QmVSase1JP7cq9QkPT46oNwdp9pT6kBkG3oqS14y3QcZjG/go-datastore" mount "gx/ipfs/QmVSase1JP7cq9QkPT46oNwdp9pT6kBkG3oqS14y3QcZjG/go-datastore/syncmount" + + badgerds "github.com/ipfs/go-ds-badger" + levelds "gx/ipfs/QmPdvXuXWAR6gtxxqZw42RtSADMwz4ijVmYHGS542b6cMz/go-ds-leveldb" ldbopts "gx/ipfs/QmbBhyDKsY4mbY6xsKt3qu9Y7FPvMJ6qbD8AMjYYvPRw1g/goleveldb/leveldb/opt" + "os" ) // ConfigFromMap creates a new datastore config from a map @@ -333,3 +337,20 @@ func (c measureDatastoreConfig) Create(path string) (repo.Datastore, error) { } return measure.New(c.prefix, child), nil } + +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) +}