Class: Curator::Memory::DataStore
- Inherits:
-
Object
- Object
- Curator::Memory::DataStore
- Defined in:
- lib/curator/memory/data_store.rb
Class Method Summary collapse
- ._bucket(bucket) ⇒ Object
- ._bucket_name(name) ⇒ Object
- ._data ⇒ Object
- ._generate_key(bucket) ⇒ Object
- ._index(bucket, index_name) ⇒ Object
- ._indices(bucket) ⇒ Object
- ._records(bucket) ⇒ Object
- .delete(collection_name, key) ⇒ Object
- .find_by_index(collection_name, index_name, query) ⇒ Object
- .find_by_key(collection_name, key) ⇒ Object
- .remove_all_keys ⇒ Object (also: reset!)
- .save(options) ⇒ Object
Class Method Details
._bucket(bucket) ⇒ Object
73 74 75 |
# File 'lib/curator/memory/data_store.rb', line 73 def self._bucket(bucket) _data[bucket] ||= {} end |
._bucket_name(name) ⇒ Object
95 96 97 |
# File 'lib/curator/memory/data_store.rb', line 95 def self._bucket_name(name) "#{Curator.config.environment}:#{name}" end |
._data ⇒ Object
69 70 71 |
# File 'lib/curator/memory/data_store.rb', line 69 def self._data @data ||= {} end |
._generate_key(bucket) ⇒ Object
89 90 91 92 93 |
# File 'lib/curator/memory/data_store.rb', line 89 def self._generate_key(bucket) keys = _records(bucket).keys keys = [0] if keys.empty? keys.max.next end |
._index(bucket, index_name) ⇒ Object
85 86 87 |
# File 'lib/curator/memory/data_store.rb', line 85 def self._index(bucket, index_name) _indices(bucket)[index_name] ||= {} end |
._indices(bucket) ⇒ Object
81 82 83 |
# File 'lib/curator/memory/data_store.rb', line 81 def self._indices(bucket) _bucket(bucket)[:indices] ||= {} end |
._records(bucket) ⇒ Object
77 78 79 |
# File 'lib/curator/memory/data_store.rb', line 77 def self._records(bucket) _bucket(bucket)[:records] ||= {} end |
.delete(collection_name, key) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/curator/memory/data_store.rb', line 31 def self.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_index(collection_name, index_name, query) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/curator/memory/data_store.rb', line 51 def self.find_by_index(collection_name, index_name, query) return [] if query.nil? bucket = _bucket_name(collection_name) index = _index(bucket, index_name) 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
44 45 46 47 48 49 |
# File 'lib/curator/memory/data_store.rb', line 44 def self.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 Also known as: reset!
6 7 8 |
# File 'lib/curator/memory/data_store.rb', line 6 def self.remove_all_keys @data = {} end |
.save(options) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/curator/memory/data_store.rb', line 13 def self.save() bucket = _bucket_name([:collection_name]) object = [:value] key = [:key] indexed_values = .fetch(:index, {}) key = _generate_key(bucket) unless key _records(bucket).store(key, object) indexed_values.each do |index_name, indexed_value| index = _index(bucket, index_name) index[indexed_value] ||= [] index[indexed_value] << key unless index[indexed_value].include?(key) end key end |