Class: Curator::Memory::DataStore
- Inherits:
-
Object
- Object
- Curator::Memory::DataStore
- Defined in:
- lib/curator/memory/data_store.rb
Instance Method Summary collapse
- #_bucket(bucket) ⇒ Object
- #_bucket_name(name) ⇒ Object
- #_data ⇒ Object
- #_generate_key(bucket) ⇒ Object
- #_index(bucket, index_name) ⇒ Object
- #_indices(bucket) ⇒ Object
- #_normalized_index_values(indexed_data) ⇒ Object
- #_records(bucket) ⇒ Object
- #delete(collection_name, key) ⇒ Object
- #find_all(collection_name) ⇒ Object
- #find_by_attribute(collection_name, attribute, query) ⇒ Object
- #find_by_key(collection_name, key) ⇒ Object
- #remove_all_keys ⇒ Object
- #reset! ⇒ Object
- #save(options) ⇒ Object
- #settings(bucket_name) ⇒ Object
- #update_settings!(collection_name, updated_settings) ⇒ Object
Instance Method Details
#_bucket(bucket) ⇒ Object
94 95 96 |
# File 'lib/curator/memory/data_store.rb', line 94 def _bucket(bucket) _data[bucket] ||= {} end |
#_bucket_name(name) ⇒ Object
124 125 126 |
# File 'lib/curator/memory/data_store.rb', line 124 def _bucket_name(name) "#{Curator.config.environment}:#{name}" end |
#_data ⇒ Object
90 91 92 |
# File 'lib/curator/memory/data_store.rb', line 90 def _data @data ||= {} end |
#_generate_key(bucket) ⇒ Object
118 119 120 121 122 |
# File 'lib/curator/memory/data_store.rb', line 118 def _generate_key(bucket) keys = _records(bucket).keys keys = [0] if keys.empty? keys.max.next end |
#_index(bucket, index_name) ⇒ Object
106 107 108 |
# File 'lib/curator/memory/data_store.rb', line 106 def _index(bucket, index_name) _indices(bucket)[index_name] ||= {} end |
#_indices(bucket) ⇒ Object
102 103 104 |
# File 'lib/curator/memory/data_store.rb', line 102 def _indices(bucket) _bucket(bucket)[:indices] ||= {} end |
#_normalized_index_values(indexed_data) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/curator/memory/data_store.rb', line 110 def _normalized_index_values(indexed_data) if indexed_data.is_a?(Array) indexed_data else [indexed_data] end end |
#_records(bucket) ⇒ Object
98 99 100 |
# File 'lib/curator/memory/data_store.rb', line 98 def _records(bucket) _bucket(bucket)[:records] ||= {} end |
#delete(collection_name, key) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/curator/memory/data_store.rb', line 44 def delete(collection_name, key) bucket = _bucket_name(collection_name) _records(bucket).delete(key) _indices(bucket).each_key do |name| index = _index(bucket, name) index.each do |value, keys| next unless keys.include?(key) index[value].delete(key) end index.delete_if { |value, keys| keys.empty? } end end |
#find_all(collection_name) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/curator/memory/data_store.rb', line 57 def find_all(collection_name) bucket = _bucket_name(collection_name) _records(bucket).inject([]) do |results, (key,value)| results << {:key => key, :data => value} results end end |
#find_by_attribute(collection_name, attribute, query) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/curator/memory/data_store.rb', line 72 def find_by_attribute(collection_name, attribute, query) return [] if query.nil? bucket = _bucket_name(collection_name) index = _index(bucket, attribute) keys = case query when Range keys = index.keys.select do |key| key.between?(query.first, query.last) end index.values_at(*keys).flatten else index.fetch(query, []) end keys.map do |key| find_by_key(collection_name, key) end end |
#find_by_key(collection_name, key) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/curator/memory/data_store.rb', line 65 def find_by_key(collection_name, key) bucket = _bucket_name(collection_name) value = _records(bucket).fetch(key, nil) return if value.nil? {:key => key, :data => value} end |
#remove_all_keys ⇒ Object
15 16 17 |
# File 'lib/curator/memory/data_store.rb', line 15 def remove_all_keys @data = {} end |
#reset! ⇒ Object
19 20 21 |
# File 'lib/curator/memory/data_store.rb', line 19 def reset! remove_all_keys end |
#save(options) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/curator/memory/data_store.rb', line 23 def save() bucket = _bucket_name([:collection_name]) object = [:value] key = [:key] indexes = .fetch(:index, {}) key = _generate_key(bucket) unless key _records(bucket).store(key, object) indexes.each do |index_name, index_data| index = _index(bucket, index_name) _normalized_index_values(index_data).each do |index_value| index[index_value] ||= [] index[index_value] << key unless index[index_value].include?(key) end end key end |
#settings(bucket_name) ⇒ Object
7 8 9 |
# File 'lib/curator/memory/data_store.rb', line 7 def settings(bucket_name) {} end |
#update_settings!(collection_name, updated_settings) ⇒ Object
11 12 13 |
# File 'lib/curator/memory/data_store.rb', line 11 def update_settings!(collection_name, updated_settings) # NOOP end |