doeskeyvalue 0.2.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +1 -0
- data/Gemfile +14 -4
- data/Gemfile.lock +42 -7
- data/LICENSE.txt +1 -1
- data/README.rdoc +102 -67
- data/Rakefile +43 -19
- data/VERSION +1 -1
- data/doeskeyvalue.gemspec +43 -22
- data/lib/doeskeyvalue.rb +46 -79
- data/lib/doeskeyvalue/accessors.rb +136 -0
- data/lib/doeskeyvalue/column_storage.rb +95 -0
- data/lib/doeskeyvalue/configuration.rb +32 -0
- data/lib/doeskeyvalue/index.rb +145 -0
- data/lib/doeskeyvalue/state.rb +48 -0
- data/lib/doeskeyvalue/table_storage.rb +79 -0
- data/lib/doeskeyvalue/util.rb +25 -18
- data/lib/generators/doeskeyvalue/doeskeyvalue_generator.rb +9 -5
- data/lib/generators/doeskeyvalue/templates/create_key_value_index.rb +22 -7
- data/spec/doeskeyvalue/column_storage_spec.rb +139 -0
- data/spec/doeskeyvalue/table_storage_spec.rb +140 -0
- data/spec/spec_helper.rb +25 -0
- metadata +151 -57
- data/.document +0 -5
- data/lib/doeskeyvalue/indexes.rb +0 -104
- data/lib/doeskeyvalue/key_manager.rb +0 -116
- data/lib/doeskeyvalue/keys.rb +0 -46
data/lib/doeskeyvalue/keys.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# AWEXOME LABS
|
2
|
-
# DoesKeyValue
|
3
|
-
#
|
4
|
-
# Keys -- ActiveRecord::Base methods for setting schemaless keys
|
5
|
-
|
6
|
-
module DoesKeyValue
|
7
|
-
module Keys
|
8
|
-
|
9
|
-
def declare_key(key_value_column, key_name, opts={})
|
10
|
-
# printf("DECLARE_KEY: %s.%s key declaration beginning\n", key_value_column, key_name)
|
11
|
-
|
12
|
-
raise DoesKeyValue::NoColumnNameSpecified unless key_value_column
|
13
|
-
raise DoesKeyValue::NoKeyNameSpecified unless key_name
|
14
|
-
raise DoesKeyValue::KeyAndIndexOptionsMustBeHash unless opts.is_a?(Hash)
|
15
|
-
|
16
|
-
# TODO: Allow :type option to set an enforced data type
|
17
|
-
# TODO: Allow :default option to set a default return value
|
18
|
-
|
19
|
-
# Define accessors for the key column in the AR class:
|
20
|
-
class_eval <<-EOS
|
21
|
-
def #{key_name}
|
22
|
-
all_keys = self.send(:read_attribute, :#{key_value_column}) || Hashie::Mash.new
|
23
|
-
return all_keys.send("#{key_name}")
|
24
|
-
end
|
25
|
-
|
26
|
-
def #{key_name}=(value)
|
27
|
-
all_keys = self.send(:read_attribute, :#{key_value_column}) || Hashie::Mash.new
|
28
|
-
all_keys.send("#{key_name}=", value)
|
29
|
-
self.send(:write_attribute, :#{key_value_column}, all_keys)
|
30
|
-
end
|
31
|
-
EOS
|
32
|
-
|
33
|
-
# Check for opts[:index=>true] and if present, call declare_index
|
34
|
-
if opts[:index] == true
|
35
|
-
declare_index(key_value_column, key_name) # TODO: Provide mechanism for passing index options
|
36
|
-
end
|
37
|
-
|
38
|
-
# Add the key to the key and column manager:
|
39
|
-
DoesKeyValue::KeyManager.instance.declare_key(self, key_value_column, key_name, opts)
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end # Keys
|
46
|
-
end # DoesKeyValue
|