Class: ActiveMapper::Adapter::Memory

Inherits:
Object
  • Object
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

Constructor Details

#initializeMemory

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