Module: Arel

Defined in:
lib/arel_extensions/nodes/select.rb,
lib/arel_extensions.rb

Defined Under Namespace

Modules: Nodes Classes: InsertManager, SelectManager, Table

Class Method Summary collapse

Class Method Details

.column_of(table_name, column_name) ⇒ Object



99
100
101
# File 'lib/arel_extensions.rb', line 99

def self.column_of table_name, column_name
  ArelExtensions.column_of(table_name, column_name)
end

.duration(s, expr) ⇒ Object



103
104
105
# File 'lib/arel_extensions.rb', line 103

def self.duration s, expr
  ArelExtensions::Nodes::Duration.new("#{s}i", expr)
end

.falseObject

The FALSE pseudo literal.



108
109
110
# File 'lib/arel_extensions.rb', line 108

def self.false
  Arel::Nodes::Equality.new(1, 0)
end

.grouping(*v) ⇒ Object



112
113
114
# File 'lib/arel_extensions.rb', line 112

def self.grouping *v
  Arel::Nodes::Grouping.new(*v)
end

.json(*expr) ⇒ Object



116
117
118
119
120
121
122
123
124
# File 'lib/arel_extensions.rb', line 116

def self.json *expr
  ArelExtensions::Nodes::Json.new(
    if expr.length == 1
      expr.first
    else
      expr
    end
  )
end

.json_falseObject



136
137
138
139
140
141
142
143
144
# File 'lib/arel_extensions.rb', line 136

def self.json_false
  res = Arel.grouping(Arel.quoted('false'))
  res.instance_eval {
    def return_type
      :boolean
    end
  }
  res
end

.json_trueObject



126
127
128
129
130
131
132
133
134
# File 'lib/arel_extensions.rb', line 126

def self.json_true
  res = Arel.grouping(Arel.quoted('true'))
  res.instance_eval {
    def return_type
      :boolean
    end
  }
  res
end

.nullObject

The NULL literal.



147
148
149
# File 'lib/arel_extensions.rb', line 147

def self.null
  Arel.quoted(nil)
end

.quoted(*args) ⇒ Object



151
152
153
# File 'lib/arel_extensions.rb', line 151

def self.quoted *args
  Arel::Nodes.build_quoted(*args)
end

.randObject



155
156
157
# File 'lib/arel_extensions.rb', line 155

def self.rand
  ArelExtensions::Nodes::Rand.new
end

.rollup(*args) ⇒ Object



159
160
161
# File 'lib/arel_extensions.rb', line 159

def self.rollup(*args)
  Arel::Nodes::RollUp.new(args)
end

.shorten(s) ⇒ Object



163
164
165
# File 'lib/arel_extensions.rb', line 163

def self.shorten s
  Base64.urlsafe_encode64(Digest::MD5.new.digest(s)).tr('=', '').tr('-', '_')
end

.trueObject

The TRUE pseudo literal.



168
169
170
# File 'lib/arel_extensions.rb', line 168

def self.true
  Arel::Nodes::Equality.new(1, 1)
end

.tuple(*v) ⇒ Object



172
173
174
175
# File 'lib/arel_extensions.rb', line 172

def self.tuple *v
  tmp = Arel.grouping(nil)
  Arel.grouping v.map{|e| tmp.convert_to_node(e)}
end

.when(condition) ⇒ Object

For instance

“‘ Arel.when(at.is_null).then(0).else(1) “`



182
183
184
# File 'lib/arel_extensions.rb', line 182

def self.when condition
  ArelExtensions::Nodes::Case.new.when(condition)
end