Class: Curator::Memory::DataStore

Inherits:
Object
  • Object
show all
Defined in:
lib/curator/memory/data_store.rb

Class Method Summary collapse

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

._dataObject



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_keysObject 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(options)
  bucket = _bucket_name(options[:collection_name])
  object = options[:value]
  key = options[:key]
  indexed_values = options.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