Class: ActiveMapper::Adapter::Memory
- Inherits:
-
Object
- Object
- ActiveMapper::Adapter::Memory
show all
- Defined in:
- lib/active_mapper/adapter/memory.rb,
lib/active_mapper/adapter/memory/order.rb,
lib/active_mapper/adapter/memory/query.rb,
lib/active_mapper/adapter/memory/order/attribute.rb,
lib/active_mapper/adapter/memory/query/attribute.rb,
lib/active_mapper/adapter/memory/query/expression.rb
Defined Under Namespace
Classes: AndExpression, Attribute, Expression, InvertedExpression, NotExpression, OrExpression, Order, Query
Instance Method Summary
collapse
-
#average(klass, attribute, &block) ⇒ Object
-
#count(klass, &block) ⇒ Object
-
#delete(klass, object) ⇒ Object
-
#delete_all(klass, &block) ⇒ Object
-
#find(klass, id) ⇒ Object
-
#initialize ⇒ Memory
constructor
A new instance of Memory.
-
#insert(klass, object) ⇒ Object
-
#maximum(klass, attribute, &block) ⇒ Object
-
#minimum(klass, attribute, &block) ⇒ Object
-
#sum(klass, attribute, &block) ⇒ Object
-
#unserialize(klass, object) ⇒ Object
-
#update(klass, object) ⇒ Object
-
#where(klass, options = {}, &block) ⇒ Object
Constructor Details
#initialize ⇒ Memory
Returns a new instance of Memory.
7
8
9
|
# File 'lib/active_mapper/adapter/memory.rb', line 7
def initialize
@collection = {}
end
|
Instance Method Details
#average(klass, attribute, &block) ⇒ Object
39
40
41
|
# File 'lib/active_mapper/adapter/memory.rb', line 39
def average(klass, attribute, &block)
sum(klass, attribute, &block).to_f / count(klass, &block)
end
|
#count(klass, &block) ⇒ Object
27
28
29
|
# File 'lib/active_mapper/adapter/memory.rb', line 27
def count(klass, &block)
where(klass, &block).count
end
|
#delete(klass, object) ⇒ Object
59
60
61
|
# File 'lib/active_mapper/adapter/memory.rb', line 59
def delete(klass, object)
collection(klass).delete(object.id)
end
|
#delete_all(klass, &block) ⇒ Object
63
64
65
66
67
|
# File 'lib/active_mapper/adapter/memory.rb', line 63
def delete_all(klass, &block)
where(klass, &block).each do |object|
delete(klass, object)
end
end
|
#find(klass, id) ⇒ Object
11
12
13
|
# File 'lib/active_mapper/adapter/memory.rb', line 11
def find(klass, id)
collection(klass)[id]
end
|
#insert(klass, object) ⇒ Object
47
48
49
50
51
52
53
|
# File 'lib/active_mapper/adapter/memory.rb', line 47
def insert(klass, object)
object = object.dup
object.id = (collection(klass).keys.last || 0) + 1
collection(klass)[object.id] = object
object.id
end
|
#maximum(klass, attribute, &block) ⇒ Object
35
36
37
|
# File 'lib/active_mapper/adapter/memory.rb', line 35
def maximum(klass, attribute, &block)
where(klass, order: proc { |object| [-object.send(attribute)] }, &block).first.send(attribute)
end
|
#minimum(klass, attribute, &block) ⇒ Object
31
32
33
|
# File 'lib/active_mapper/adapter/memory.rb', line 31
def minimum(klass, attribute, &block)
where(klass, order: proc { |object| [object.send(attribute)] }, &block).first.send(attribute)
end
|
#sum(klass, attribute, &block) ⇒ Object
43
44
45
|
# File 'lib/active_mapper/adapter/memory.rb', line 43
def sum(klass, attribute, &block)
where(klass, &block).sum(&:"#{attribute}")
end
|
#unserialize(klass, object) ⇒ Object
69
70
71
|
# File 'lib/active_mapper/adapter/memory.rb', line 69
def unserialize(klass, object)
object
end
|
#update(klass, object) ⇒ Object
55
56
57
|
# File 'lib/active_mapper/adapter/memory.rb', line 55
def update(klass, object)
collection(klass)[object.id] = object.dup
end
|
#where(klass, options = {}, &block) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/active_mapper/adapter/memory.rb', line 15
def where(klass, options = {}, &block)
query = Query.new(&block)
order = Order.new(&options[:order])
records = collection(klass).values.select(&query.to_proc)
records = records.sort(&order.to_proc)
records = records.drop(options[:offset]) if options[:offset]
records = records.take(options[:limit]) if options[:limit]
records
end
|