Class: ActiveAny::ObjectAdapter
Instance Attribute Summary
#klass
Instance Method Summary
collapse
-
#array_handler(record, key, array) ⇒ Object
-
#base_handler(record, key, value) ⇒ Object
-
#group_handler(records, group_values) ⇒ Object
-
#limit_handler(records, limit_value) ⇒ Object
-
#order_handler(records, order_clause) ⇒ Object
-
#query(where_clause: Relation::WhereClause.empty, order_clause: Relation::OrderClause.empty, limit_value: nil, group_values: []) ⇒ Object
-
#range_handler(record, key, range) ⇒ Object
-
#regexp_handler(record, key, regexp) ⇒ Object
-
#where_handler(records, where_clause) ⇒ Object
#initialize
Instance Method Details
#array_handler(record, key, array) ⇒ Object
42
43
44
|
# File 'lib/active_any/adapters/object_adapter.rb', line 42
def array_handler(record, key, array)
array.include? record.send(key)
end
|
#base_handler(record, key, value) ⇒ Object
30
31
32
|
# File 'lib/active_any/adapters/object_adapter.rb', line 30
def base_handler(record, key, value)
record.send(key) == value
end
|
#group_handler(records, group_values) ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/active_any/adapters/object_adapter.rb', line 46
def group_handler(records, group_values)
return records if group_values.empty?
records.uniq do |record|
group_values.map { |method| record.send(method) }
end
end
|
#limit_handler(records, limit_value) ⇒ Object
21
22
23
|
# File 'lib/active_any/adapters/object_adapter.rb', line 21
def limit_handler(records, limit_value)
limit_value ? records.take(limit_value) : records
end
|
#order_handler(records, order_clause) ⇒ Object
25
26
27
28
|
# File 'lib/active_any/adapters/object_adapter.rb', line 25
def order_handler(records, order_clause)
ordered_records = order_clause.empty? ? records : sort_by_order_clause(records, order_clause)
order_clause.reverse? ? ordered_records.reverse : ordered_records
end
|
#query(where_clause: Relation::WhereClause.empty, order_clause: Relation::OrderClause.empty, limit_value: nil, group_values: []) ⇒ Object
5
6
7
8
9
10
11
|
# File 'lib/active_any/adapters/object_adapter.rb', line 5
def query(where_clause: Relation::WhereClause.empty, order_clause: Relation::OrderClause.empty, limit_value: nil, group_values: [])
records = where_handler(klass.data, where_clause)
records = group_handler(records, group_values)
records = limit_handler(records, limit_value)
records = order_handler(records, order_clause)
records
end
|
#range_handler(record, key, range) ⇒ Object
38
39
40
|
# File 'lib/active_any/adapters/object_adapter.rb', line 38
def range_handler(record, key, range)
range.include? record.send(key)
end
|
#regexp_handler(record, key, regexp) ⇒ Object
34
35
36
|
# File 'lib/active_any/adapters/object_adapter.rb', line 34
def regexp_handler(record, key, regexp)
regexp.match? record.send(key)
end
|
#where_handler(records, where_clause) ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/active_any/adapters/object_adapter.rb', line 13
def where_handler(records, where_clause)
records.select do |record|
where_clause.all? do |condition|
condition.evaluate(self, record)
end
end
end
|