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.
@@ -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