Class: TreeStore
- Inherits:
-
Object
- Object
- TreeStore
- Defined in:
- lib/treestore.rb
Instance Method Summary collapse
- #add(item) ⇒ Object
- #delete(key) ⇒ Object
- #exists?(key) ⇒ Boolean
-
#initialize(backend = RedisBackend.new) ⇒ TreeStore
constructor
A new instance of TreeStore.
- #make_ref(name, key) ⇒ Object
- #make_tree(keys) ⇒ Object
- #ref(name) ⇒ Object
- #retrieve(key) ⇒ Object
- #type(key) ⇒ Object
Constructor Details
#initialize(backend = RedisBackend.new) ⇒ TreeStore
Returns a new instance of TreeStore.
6 7 8 9 10 |
# File 'lib/treestore.rb', line 6 def initialize(backend=RedisBackend.new) raise RuntimeError, "#{backend} is not an appropriate backend" if not backend.kind_of? Backend @backend = backend @namespace = "tree-store" end |
Instance Method Details
#add(item) ⇒ Object
12 13 14 15 16 |
# File 'lib/treestore.rb', line 12 def add(item) key = Digest::SHA1.hexdigest(item) @backend.addblob(make_object_key(key), item) key end |
#delete(key) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/treestore.rb', line 49 def delete(key) ref = ref(key) if ref.nil? @backend.delete(make_object_key(key)) else @backend.delete(make_ref_key(key)) end end |
#exists?(key) ⇒ Boolean
62 63 64 |
# File 'lib/treestore.rb', line 62 def exists?(key) @backend.exists?(make_object_key(ref(key) || key)) end |
#make_ref(name, key) ⇒ Object
43 44 45 46 47 |
# File 'lib/treestore.rb', line 43 def make_ref(name, key) realkey = ref(key) || key @backend.make_ref(make_ref_key(name), realkey) name end |
#make_tree(keys) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/treestore.rb', line 23 def make_tree(keys) realkeys = {} keys.each do |key| realkey = ref(key) || key unless exists?(realkey) raise RuntimeError, "Can't make tree, no item with key of #{key} or #{realkey} exists, make it first" end realkeys[realkey] = true end realkeys = realkeys.keys treekey = Digest::SHA1.hexdigest(realkeys.join) @backend.addtree(make_object_key(treekey), realkeys) treekey end |
#ref(name) ⇒ Object
39 40 41 |
# File 'lib/treestore.rb', line 39 def ref(name) @backend.ref(make_ref_key(name)) end |
#retrieve(key) ⇒ Object
18 19 20 21 |
# File 'lib/treestore.rb', line 18 def retrieve(key) realkey = make_object_key(ref(key) || key) @backend.retrieve(realkey) end |
#type(key) ⇒ Object
58 59 60 |
# File 'lib/treestore.rb', line 58 def type(key) @backend.type(make_object_key(ref(key) || key)) end |