Class: Hikki::Adapters::MemoryCollection

Inherits:
Collection
  • Object
show all
Defined in:
lib/hikki/adapters/memory_collection.rb

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

#storeObject (readonly)

Returns the value of attribute store.



4
5
6
# File 'lib/hikki/adapters/memory_collection.rb', line 4

def store
  @store
end

#uuid_generatorObject (readonly)

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

Returns:

  • (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_allObject



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