@cryptotaxi247 / kubo / commits / 8d7850eeb

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 }