updated datastore (keytransform)
Juan Batiz-Benet committed
Oct 21, 2014 at 15:18 UTC
8d7850eeb5c06b6aee6367974b50d9c166e016ae
2 files changed
+13
-7
core/datastore.go
+1
-1
@@ -31,7 +31,7 @@ func makeDatastore(cfg config.Datastore) (ds.ThreadSafeDatastore, error) {
31
if err != nil {
32
return nil, err
33
}
34
- ktd := ktds.WrapDatastore(d, u.DsKeyB58Encode)
34
+ ktd := ktds.Wrap(d, u.B58KeyConverter)
35
return syncds.MutexWrap(ktd), nil
36
}
37
util/key.go
+12
-6
@@ -29,24 +29,30 @@ func KeyFromDsKey(dsk ds.Key) Key {
29
return Key(dsk.BaseNamespace())
30
}
31
32
-// DsKeyB58Encode returns a B58 encoded Datastore key
32
+// B58KeyConverter -- for KeyTransform datastores
33
+// (static as only one obj needed)
34
+var B58KeyConverter = b58KeyConverter{}
35
+
36
+type b58KeyConverter struct{}
37
+
38
+// ConvertKey returns a B58 encoded Datastore key
39
// TODO: this is hacky because it encodes every path component. some
40
// path components may be proper strings already...
35
-func DsKeyB58Encode(dsk ds.Key) ds.Key {
41
+func (b58KeyConverter) ConvertKey(dsk ds.Key) ds.Key {
42
k := ds.NewKey("/")
43
for _, n := range dsk.Namespaces() {
38
- k = k.Child(b58.Encode([]byte(n)))
44
+ k = k.ChildString(b58.Encode([]byte(n)))
45
}
46
return k
47
}
48
43
-// DsKeyB58Decode returns a b58 decoded Datastore key
49
+// InvertKey returns a b58 decoded Datastore key
50
// TODO: this is hacky because it encodes every path component. some
51
// path components may be proper strings already...
46
-func DsKeyB58Decode(dsk ds.Key) ds.Key {
52
+func (b58KeyConverter) InvertKey(dsk ds.Key) ds.Key {
53
k := ds.NewKey("/")
54
for _, n := range dsk.Namespaces() {
49
- k = k.Child(string(b58.Decode(n)))
55
+ k = k.ChildString(string(b58.Decode(n)))
56
}
57
return k
58
}