Class: Ansr::Arel::Visitors::QueryBuilder
- Inherits:
-
Arel::Visitors::Visitor
- Object
- Arel::Visitors::Visitor
- Ansr::Arel::Visitors::QueryBuilder
- Defined in:
- lib/ansr/arel/visitors/query_builder.rb
Instance Attribute Summary collapse
-
#table ⇒ Object
readonly
Returns the value of attribute table.
Instance Method Summary collapse
- #field_key_from_node(node) ⇒ Object
-
#initialize(table) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
-
#multiple?(field_key) ⇒ Boolean
determines whether multiple values should accumulate or overwrite in merges.
- #visit(object, attribute = nil) ⇒ Object
- #visit_Ansr_Arel_BigTable(object, attribute) ⇒ Object
- #visit_Arel_Nodes_And(object, attribute) ⇒ Object
- #visit_Arel_Nodes_SelectCore(object, attribute) ⇒ Object
- #visit_Array(o, a) ⇒ Object
- #visit_Symbol(o, a) ⇒ Object
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
#table ⇒ Object (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
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 |