Implement pluggable Datastore types, with nothing implemented yet
License: MIT Signed-off-by: Tommi Virtanen <tv@eagain.net>
Tommi Virtanen committed
May 20, 2015 at 10:17 UTC
9497e26fbd6745f0f889e36d5825bd0f998569dd
2 files changed
+11
-6
repo/config/config.go
+1
-2
@@ -18,6 +18,7 @@ var log = logging.Logger("config")
18
// Config is used to load IPFS config files.
19
type Config struct {
20
Identity Identity // local node's peer identity
21
+ Datastore Datastore // local node's storage
22
Addresses Addresses // local node's addresses
23
Mounts Mounts // local node's mount points
24
Version Version // local node's version management
@@ -29,8 +30,6 @@ type Config struct {
30
SupernodeRouting SupernodeClientConfig // local node's routing servers (if SupernodeRouting enabled)
31
API API // local node's API settings
32
Swarm SwarmConfig
32
-
33
- Datastore Datastore
33
}
34
35
const (
repo/fsrepo/fsrepo.go
+10
-4
@@ -324,11 +324,17 @@ func (r *FSRepo) openConfig() error {
324
325
// openDatastore returns an error if the config file is not present.
326
func (r *FSRepo) openDatastore() error {
327
- d, err := openDefaultDatastore(r)
328
- if err != nil {
329
- return err
327
+ switch r.config.Datastore.Type {
328
+ case "default", "leveldb", "":
329
+ d, err := openDefaultDatastore(r)
330
+ if err != nil {
331
+ return err
332
+ }
333
+ r.ds = d
334
+ default:
335
+ return fmt.Errorf("unknown datastore type: %s", r.config.Datastore.Type)
336
}
331
- r.ds = d
337
+
338
return nil
339
}
340