Class: Activecube::Query::Selector::CombineSelector

Inherits:
Activecube::Query::Selector show all
Defined in:
lib/activecube/query/selector.rb

Constant Summary

Constants inherited from Activecube::Query::Selector

ARRAY_OPERATORS, ARRAY_OPERATOR_MAP, OPERATORS

Instance Attribute Summary

Attributes inherited from Activecube::Query::Selector

#operator

Attributes inherited from Item

#cube, #definition, #key

Instance Method Summary collapse

Methods inherited from Activecube::Query::Selector

#==, #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_namesObject



18
19
20
# File 'lib/activecube/query/selector.rb', line 18

def required_column_names
  @selectors.map(&:required_column_names).uniq
end

#to_sObject



22
23
24
# File 'lib/activecube/query/selector.rb', line 22

def to_s
  "Selector #{operator.operation}(#{@selectors.map(&:to_s).join(',')})"
end