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_by_attribute(collection_name, attribute, query) ⇒ Object
- #find_by_key(collection_name, key) ⇒ Object
- #remove_all_keys ⇒ Object
- #reset! ⇒ Object
- #save(options) ⇒ Object
Instance Method Details
#_bucket(bucket) ⇒ Object
77 78 79 |
# File 'lib/curator/memory/data_store.rb', line 77 def _bucket(bucket) _data[bucket] ||= {} end |
#_bucket_name(name) ⇒ Object
107 108 109 |
# File 'lib/curator/memory/data_store.rb', line 107 def _bucket_name(name) "#{Curator.config.environment}:#{name}" end |
#_data ⇒ Object
73 74 75 |
# File 'lib/curator/memory/data_store.rb', line 73 def _data @data ||= {} end |
#_generate_key(bucket) ⇒ Object
101 102 103 104 105 |
# File 'lib/curator/memory/data_store.rb', line 101 def _generate_key(bucket) keys = _records(bucket).keys keys = [0] if keys.empty? keys.max.next end |
#_index(bucket, index_name) ⇒ Object
89 90 91 |
# File 'lib/curator/memory/data_store.rb', line 89 def _index(bucket, index_name) _indices(bucket)[index_name] ||= {} end |
#_indices(bucket) ⇒ Object
85 86 87 |
# File 'lib/curator/memory/data_store.rb', line 85 def _indices(bucket) _bucket(bucket)[:indices] ||= {} end |
#_normalized_index_values(indexed_data) ⇒ Object
93 94 95 96 97 98 99 |
# File 'lib/curator/memory/data_store.rb', line 93 def _normalized_index_values(indexed_data) if indexed_data.is_a?(Array) indexed_data else [indexed_data] end end |
#_records(bucket) ⇒ Object
81 82 83 |
# File 'lib/curator/memory/data_store.rb', line 81 def _records(bucket) _bucket(bucket)[:records] ||= {} end |
#delete(collection_name, key) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/curator/memory/data_store.rb', line 35 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_by_attribute(collection_name, attribute, query) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/curator/memory/data_store.rb', line 55 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
48 49 50 51 52 53 |
# File 'lib/curator/memory/data_store.rb', line 48 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
6 7 8 |
# File 'lib/curator/memory/data_store.rb', line 6 def remove_all_keys @data = {} end |
#reset! ⇒ Object
10 11 12 |
# File 'lib/curator/memory/data_store.rb', line 10 def reset! remove_all_keys end |
#save(options) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/curator/memory/data_store.rb', line 14 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 |