keyvaluetree 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,7 @@ require "keyvaluetree/version"
3
3
  require 'keyvaluetree/store'
4
4
  require 'keyvaluetree/memory_store'
5
5
  require 'keyvaluetree/transaction_store'
6
+ require 'keyvaluetree/active_record_store'
6
7
 
7
8
  require 'keyvaluetree/hash'
8
9
 
@@ -0,0 +1,44 @@
1
+ module KeyValueTree
2
+
3
+ class ActiveRecordStore < Store
4
+
5
+ def initialize(storage_class, key_symbol = :key, value_symbol = :value)
6
+ @storage_class = storage_class
7
+ @key_symbol = key_symbol
8
+ @value_symbol = value_symbol
9
+ end
10
+
11
+ def key(key)
12
+ entry = @storage_class.find(@key_symbol => key)
13
+ entry ? entry[@value_symbol] : nil
14
+ end
15
+
16
+ def store(key, value)
17
+ setting = @storage_class.find_or_create(@key_symbol => key)
18
+ setting[@value_symbol] = value
19
+ setting.save!
20
+ end
21
+
22
+ def delete(key)
23
+ @storage_class.delete_all(:key => key)
24
+ end
25
+
26
+ def keys
27
+ @storage_class.all.map { |each| each[@key_symbol]ve }
28
+ end
29
+
30
+ def keys_starting_with(key)
31
+ self.keys.select do |sub_key|
32
+ sub_key.start_with?(key.to_s)
33
+ end
34
+ end
35
+
36
+ def delete_all(key)
37
+ keys_starting_with(key.to_s).each do |each|
38
+ self.delete(each)
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -1,3 +1,3 @@
1
1
  module KeyValueTree
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keyvaluetree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -93,6 +93,7 @@ files:
93
93
  - Rakefile
94
94
  - keyvaluetree.gemspec
95
95
  - lib/keyvaluetree.rb
96
+ - lib/keyvaluetree/active_record_store.rb
96
97
  - lib/keyvaluetree/hash.rb
97
98
  - lib/keyvaluetree/memory_store.rb
98
99
  - lib/keyvaluetree/store.rb
@@ -117,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
118
  version: '0'
118
119
  segments:
119
120
  - 0
120
- hash: -1788352517375914173
121
+ hash: 4228005540970520039
121
122
  required_rubygems_version: !ruby/object:Gem::Requirement
122
123
  none: false
123
124
  requirements:
@@ -126,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
127
  version: '0'
127
128
  segments:
128
129
  - 0
129
- hash: -1788352517375914173
130
+ hash: 4228005540970520039
130
131
  requirements: []
131
132
  rubyforge_project:
132
133
  rubygems_version: 1.8.24