@cryptotaxi247 / kubo / commits / bc27b9da5

badgerds: update datastore hooks

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

Łukasz Magiera committed Jul 8, 2017 at 22:57 UTC bc27b9da59e1ffc5582337f7993129981f512520
1 file changed +21 -3
repo/fsrepo/datastores.go
+21 -3
@@ -62,6 +62,7 @@ func init() {
62 "mount": MountDatastoreConfig,
63 "flatfs": FlatfsDatastoreConfig,
64 "levelds": LeveldsDatastoreConfig,
65 + "badger": BadgerdsDatastoreConfig,
66 "mem": MemDatastoreConfig,
67 "log": LogDatastoreConfig,
68 "measure": MeasureDatastoreConfig,
@@ -338,13 +339,30 @@ func (c measureDatastoreConfig) Create(path string) (repo.Datastore, error) {
339 return measure.New(c.prefix, child), nil
340 }
341
341 -func (r *FSRepo) openBadgerDatastore(params map[string]interface{}) (repo.Datastore, error) {
342 - p, ok := params["path"].(string)
342 +type badgerdsDatastoreConfig struct {
343 + path string
344 +}
345 +
346 +func BadgerdsDatastoreConfig(params map[string]interface{}) (DatastoreConfig, error) {
347 + var c badgerdsDatastoreConfig
348 + var ok bool
349 +
350 + c.path, ok = params["path"].(string)
351 if !ok {
352 return nil, fmt.Errorf("'path' field is missing or not string")
353 }
354 +
355 + return &c, nil
356 +}
357 +
358 +func (c *badgerdsDatastoreConfig) DiskId() string {
359 + return fmt.Sprintf("badgerds;%s", c.path)
360 +}
361 +
362 +func (c *badgerdsDatastoreConfig) Create(path string) (repo.Datastore, error) {
363 + p := c.path
364 if !filepath.IsAbs(p) {
347 - p = filepath.Join(r.path, p)
365 + p = filepath.Join(path, p)
366 }
367
368 err := os.MkdirAll(p, 0755)