Class: Ansr::Arel::Visitors::QueryBuilder

Inherits:
Arel::Visitors::Visitor
  • Object
show all
Defined in:
lib/ansr/arel/visitors/query_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



4
5
6
# File 'lib/ansr/arel/visitors/query_builder.rb', line 4

def initialize(table)
  @table = table
end

Instance Attribute Details

#tableObject (readonly)

Returns the value of attribute table.



3
4
5
# File 'lib/ansr/arel/visitors/query_builder.rb', line 3

def table
  @table
end

Instance Method Details

#field_key_from_node(node) ⇒ Object



37
38
39
# File 'lib/ansr/arel/visitors/query_builder.rb', line 37

def field_key_from_node(node)
  table.model.field_name(node)
end

#multiple?(field_key) ⇒ Boolean

determines whether multiple values should accumulate or overwrite in merges

Returns:

  • (Boolean)


42
43
44
# File 'lib/ansr/arel/visitors/query_builder.rb', line 42

def multiple?(field_key)
  false
end

#visit(object, attribute = nil) ⇒ Object



8
9
10
# File 'lib/ansr/arel/visitors/query_builder.rb', line 8

def visit(object, attribute=nil)
  super(object, attribute)
end

#visit_Ansr_Arel_BigTable(object, attribute) ⇒ Object



12
13
14
15
# File 'lib/ansr/arel/visitors/query_builder.rb', line 12

def visit_Ansr_Arel_BigTable(object, attribute)
  visit object.name, attribute if Ansr::Arel::Visitors::From === attribute
  @table = object if Ansr::Arel::BigTable === object and Ansr::Arel::Visitors::From === attribute
end

#visit_Arel_Nodes_And(object, attribute) ⇒ Object



33
34
35
# File 'lib/ansr/arel/visitors/query_builder.rb', line 33

def visit_Arel_Nodes_And(object, attribute)
  visit(object.children, attribute)
end

#visit_Arel_Nodes_SelectCore(object, attribute) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/ansr/arel/visitors/query_builder.rb', line 17

def visit_Arel_Nodes_SelectCore(object, attribute)
  visit(object.froms, From.new(attribute)) if object.froms
  object.projections.each { |x| visit(x, attribute) }
  object.wheres.each { |x| visit(x, attribute) }
  object.groups.each {|x| visit(x, attribute) if x}
  self
end

#visit_Array(o, a) ⇒ Object



29
30
31
# File 'lib/ansr/arel/visitors/query_builder.rb', line 29

def visit_Array o, a
  o.map { |x| visit x, a }
end

#visit_Symbol(o, a) ⇒ Object



25
26
27
# File 'lib/ansr/arel/visitors/query_builder.rb', line 25

def visit_Symbol o, a
  visit o.to_s, a
end