Class: Activecube::Query::Selector

Inherits:
Item
  • Object
show all
Defined in:
lib/activecube/query/selector.rb

Direct Known Subclasses

OrSelector

Defined Under Namespace

Classes: Operator

Constant Summary collapse

OPERATORS =
['eq','ne','gt','lt','gteq','lteq','in','not_in','between']
ARRAY_OPERATORS =
['in','not_in']

Instance Attribute Summary collapse

Attributes inherited from Item

#cube, #definition, #key

Instance Method Summary collapse

Methods inherited from Item

#required_column_names

Constructor Details

#initialize(cube, key, definition, operator = nil) ⇒ Selector

Returns a new instance of Selector.



38
39
40
41
# File 'lib/activecube/query/selector.rb', line 38

def initialize cube, key, definition, operator = nil
  super cube, key, definition
  @operator = operator
end

Instance Attribute Details

#operatorObject (readonly)

Returns the value of attribute operator.



37
38
39
# File 'lib/activecube/query/selector.rb', line 37

def operator
  @operator
end

Instance Method Details

#==(other) ⇒ Object



90
91
92
# File 'lib/activecube/query/selector.rb', line 90

def == other
  eql? other
end

#alias!(new_key) ⇒ Object



71
72
73
# File 'lib/activecube/query/selector.rb', line 71

def alias! new_key
  self.class.new cube, new_key, definition, operator
end

#append_query(model, cube_query, table, query) ⇒ Object



75
76
77
# File 'lib/activecube/query/selector.rb', line 75

def append_query model, cube_query, table, query
  query.where(expression model, table, cube_query)
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


83
84
85
86
87
88
# File 'lib/activecube/query/selector.rb', line 83

def eql?(other)
  return other.kind_of?(Selector) &&
      self.cube==other.cube &&
      self.operator == other.operator &&
      self.definition.class == other.definition.class
end

#expression(model, arel_table, cube_query) ⇒ Object



79
80
81
# File 'lib/activecube/query/selector.rb', line 79

def expression model, arel_table, cube_query
  definition.expression model, arel_table, self, cube_query
end

#hashObject



94
95
96
# File 'lib/activecube/query/selector.rb', line 94

def hash
  self.definition.class.hash + self.operator.hash
end

#to_sObject



98
99
100
# File 'lib/activecube/query/selector.rb', line 98

def to_s
  "Selector #{super}"
end