Class: ActiveAny::ObjectAdapter

Inherits:
AbstractAdapter show all
Defined in:
lib/active_any/adapters/object_adapter.rb

Instance Attribute Summary

Attributes inherited from AbstractAdapter

#klass

Instance Method Summary collapse

Methods inherited from AbstractAdapter

#initialize

Constructor Details

This class inherits a constructor from ActiveAny::AbstractAdapter

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