aboutsummaryrefslogblamecommitdiffstats
path: root/activerecord/lib/arel/factory_methods.rb
blob: 83ec23e403f35669ce6e74caee5810788b94b8ff (plain) (tree)
1
2
3
4
5
6
                             
 
                         


                                      







                            
                                          


                                           
                                                                   
                               
       
 
                              
                                            
       
 
                           

                            
 
                       

                        
 
                      

                              


                               

                                                                    
       



                                                

     
# frozen_string_literal: true

module Arel # :nodoc: all
  ###
  # Methods for creating various nodes
  module FactoryMethods
    def create_true
      Arel::Nodes::True.new
    end

    def create_false
      Arel::Nodes::False.new
    end

    def create_table_alias(relation, name)
      Nodes::TableAlias.new(relation, name)
    end

    def create_join(to, constraint = nil, klass = Nodes::InnerJoin)
      klass.new(to, constraint)
    end

    def create_string_join(to)
      create_join to, nil, Nodes::StringJoin
    end

    def create_and(clauses)
      Nodes::And.new clauses
    end

    def create_on(expr)
      Nodes::On.new expr
    end

    def grouping(expr)
      Nodes::Grouping.new expr
    end

    ###
    # Create a LOWER() function
    def lower(column)
      Nodes::NamedFunction.new "LOWER", [Nodes.build_quoted(column)]
    end

    def coalesce(*exprs)
      Nodes::NamedFunction.new "COALESCE", exprs
    end
  end
end