Class: Curator::Memory::DataStore

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

Instance Method Summary collapse

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

#_dataObject



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_keysObject



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