Class: YADM::Adapters::Memory::Collection
- Inherits:
-
Object
- Object
- YADM::Adapters::Memory::Collection
- Defined in:
- lib/yadm/adapters/memory.rb
Instance Method Summary collapse
- #add(record) ⇒ Object
- #all ⇒ Object
- #change(id, new_attributes) ⇒ Object
- #count ⇒ Object
- #filter(dataset, condition, arguments) ⇒ Object
- #get(id) ⇒ Object
-
#initialize ⇒ Collection
constructor
A new instance of Collection.
- #limit(dataset, limit, arguments) ⇒ Object
- #order(dataset, order, arguments) ⇒ Object
- #remove(id) ⇒ Object
- #send_query(query) ⇒ Object
Constructor Details
#initialize ⇒ Collection
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 |
#all ⇒ Object
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 |
#count ⇒ Object
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 |