Class: Activecube::Query::Selector::CombineSelector
Constant Summary
ARRAY_OPERATORS, ARRAY_OPERATOR_MAP, OPERATORS
Instance Attribute Summary
#operator
Attributes inherited from Item
#cube, #definition, #key
Instance Method Summary
collapse
#==, #alias!, and, #eql?, #hash, or
Methods inherited from Item
#alias!, #append_with!
Constructor Details
#initialize(selectors, operator) ⇒ CombineSelector
Returns a new instance of CombineSelector.
13
14
15
16
|
# File 'lib/activecube/query/selector.rb', line 13
def initialize selectors, operator
@selectors = selectors
@operator = operator
end
|
Instance Method Details
#append_query(model, cube_query, arel_table, query) ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/activecube/query/selector.rb', line 34
def append_query model, cube_query, arel_table, query
@selectors.each do |s|
query = s.append_with!(model, cube_query, arel_table, query)
end
query.where expression(model, arel_table, cube_query)
end
|
#expression(model, arel_table, cube_query) ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/activecube/query/selector.rb', line 26
def expression model, arel_table, cube_query
expr = nil
@selectors.each do |s|
expr = expr ? expr.send( operator.operation, s.expression(model, arel_table, cube_query)) : s.expression(model, arel_table, cube_query)
end
expr
end
|
#required_column_names ⇒ Object
18
19
20
|
# File 'lib/activecube/query/selector.rb', line 18
def required_column_names
@selectors.map(&:required_column_names).uniq
end
|
#to_s ⇒ Object
22
23
24
|
# File 'lib/activecube/query/selector.rb', line 22
def to_s
"Selector #{operator.operation}(#{@selectors.map(&:to_s).join(',')})"
end
|