Class: Hikki::Adapters::MemoryCollection
Instance Attribute Summary collapse
Attributes inherited from Collection
#collection
Instance Method Summary
collapse
Methods inherited from Collection
#deep_copy, #normalize_data, #normalize_options, #page_range
Constructor Details
#initialize(collection, store, uuid_generator) ⇒ MemoryCollection
Returns a new instance of MemoryCollection.
6
7
8
9
10
|
# File 'lib/hikki/adapters/memory_collection.rb', line 6
def initialize(collection, store, uuid_generator)
super(collection)
@store = store
@uuid_generator = uuid_generator
end
|
Instance Attribute Details
#store ⇒ Object
Returns the value of attribute store.
4
5
6
|
# File 'lib/hikki/adapters/memory_collection.rb', line 4
def store
@store
end
|
#uuid_generator ⇒ Object
Returns the value of attribute uuid_generator.
4
5
6
|
# File 'lib/hikki/adapters/memory_collection.rb', line 4
def uuid_generator
@uuid_generator
end
|
Instance Method Details
#all(options = {}) ⇒ Object
30
31
32
33
|
# File 'lib/hikki/adapters/memory_collection.rb', line 30
def all(options={})
options = normalize_options(options)
store.fetch(collection, {}).values[page_range(options)]
end
|
#find(id) ⇒ Object
26
27
28
|
# File 'lib/hikki/adapters/memory_collection.rb', line 26
def find(id)
store.fetch(collection, {}).fetch(id.to_s, {})
end
|
#find_by(field, value, options = {}) ⇒ Object
35
36
37
38
39
|
# File 'lib/hikki/adapters/memory_collection.rb', line 35
def find_by(field, value, options={})
options = normalize_options(options)
return find_by_index(field, value, options) if has_index?(field)
all.select { |o| o.fetch(field.to_s) == value }[page_range(options)]
end
|
#has_index?(field) ⇒ Boolean
53
54
55
56
|
# File 'lib/hikki/adapters/memory_collection.rb', line 53
def has_index?(field)
store.has_key?(index_key) &&
store[index_key].has_key?(field.to_s)
end
|
#id_for(data) ⇒ Object
58
59
60
|
# File 'lib/hikki/adapters/memory_collection.rb', line 58
def id_for(data)
data.fetch('id', uuid_generator.uuid).to_s
end
|
#index(field) ⇒ Object
12
13
14
15
16
|
# File 'lib/hikki/adapters/memory_collection.rb', line 12
def index(field)
store[index_key] ||= {}
store[index_key][field.to_s] ||= {}
true
end
|
#remove(id) ⇒ Object
41
42
43
44
45
|
# File 'lib/hikki/adapters/memory_collection.rb', line 41
def remove(id)
remove_from_index(find(id))
store.fetch(collection, {}).delete(id.to_s)
true
end
|
#remove_all ⇒ Object
47
48
49
50
51
|
# File 'lib/hikki/adapters/memory_collection.rb', line 47
def remove_all
store.delete(collection)
store.delete(index_key)
true
end
|
#save(data) ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/hikki/adapters/memory_collection.rb', line 18
def save(data)
data = normalize_data(data)
store[collection] ||= {}
store[collection][data['id']] = data
add_to_index(data)
data
end
|