Class: YADM::Adapters::Memory::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/yadm/adapters/memory.rb

Instance Method Summary collapse

Constructor Details

#initializeCollection

Returns a new instance of Collection.



50
51
52
# File 'lib/yadm/adapters/memory.rb', line 50

def initialize
  @records = {}
end

Instance Method Details

#add(record) ⇒ Object



58
59
60
61
62
# File 'lib/yadm/adapters/memory.rb', line 58

def add(record)
  next_id.tap do |new_id|
    records[new_id] = record.merge(id: new_id)
  end
end

#allObject



82
83
84
# File 'lib/yadm/adapters/memory.rb', line 82

def all
  records.values.dup
end

#change(id, new_attributes) ⇒ Object



64
65
66
# File 'lib/yadm/adapters/memory.rb', line 64

def change(id, new_attributes)
  records[id].update(new_attributes)
end

#countObject



72
73
74
# File 'lib/yadm/adapters/memory.rb', line 72

def count
  records.count
end

#filter(dataset, condition, arguments) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/yadm/adapters/memory.rb', line 86

def filter(dataset, condition, arguments)
  if condition.nil?
    dataset
  else
    dataset.select { |record| matches?(record, condition.expression, arguments) }
  end
end

#get(id) ⇒ Object



54
55
56
# File 'lib/yadm/adapters/memory.rb', line 54

def get(id)
  records.fetch(id)
end

#limit(dataset, limit, arguments) ⇒ Object



102
103
104
105
106
107
108
# File 'lib/yadm/adapters/memory.rb', line 102

def limit(dataset, limit, arguments)
  if limit.nil? || limit.limit.nil?
    dataset
  else
    take(dataset, limit.limit, arguments)
  end
end

#order(dataset, order, arguments) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/yadm/adapters/memory.rb', line 94

def order(dataset, order, arguments)
  if order.nil?
    dataset
  else
    dataset.sort { |*records| compare(records, order.clauses, arguments) }
  end
end

#remove(id) ⇒ Object



68
69
70
# File 'lib/yadm/adapters/memory.rb', line 68

def remove(id)
  records.delete(id)
end

#send_query(query) ⇒ Object



76
77
78
79
80
# File 'lib/yadm/adapters/memory.rb', line 76

def send_query(query)
  result = filter(all, query.criteria.condition, query.arguments)
  result = order(result, query.criteria.order, query.arguments)
  result = limit(result, query.criteria.limit, query.arguments)
end