aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/factory_methods.rb
blob: cb66f6f888419ca53b856b4fde1125c1a41dfef2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
module Arel
  ###
  # 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
  end
end