Class: Arel::Nodes::Window
- Inherits:
-
Node
- Object
- Node
- Arel::Nodes::Window
show all
- Defined in:
- lib/arel/nodes/window.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Node
#_caller, #and, #each, #not, #or, #to_sql
#create_and, #create_false, #create_join, #create_on, #create_string_join, #create_table_alias, #create_true, #grouping, #lower
Constructor Details
#initialize ⇒ Window
Returns a new instance of Window.
7
8
9
10
11
|
# File 'lib/arel/nodes/window.rb', line 7
def initialize
@orders = []
@partitions = []
@framing = nil
end
|
Instance Attribute Details
#framing ⇒ Object
Returns the value of attribute framing.
5
6
7
|
# File 'lib/arel/nodes/window.rb', line 5
def framing
@framing
end
|
#orders ⇒ Object
Returns the value of attribute orders.
5
6
7
|
# File 'lib/arel/nodes/window.rb', line 5
def orders
@orders
end
|
#partitions ⇒ Object
Returns the value of attribute partitions.
5
6
7
|
# File 'lib/arel/nodes/window.rb', line 5
def partitions
@partitions
end
|
Instance Method Details
#eql?(other) ⇒ Boolean
Also known as:
==
58
59
60
61
62
63
|
# File 'lib/arel/nodes/window.rb', line 58
def eql? other
self.class == other.class &&
self.orders == other.orders &&
self.framing == other.framing &&
self.partitions == other.partitions
end
|
#frame(expr) ⇒ Object
29
30
31
|
# File 'lib/arel/nodes/window.rb', line 29
def frame(expr)
@framing = expr
end
|
#hash ⇒ Object
54
55
56
|
# File 'lib/arel/nodes/window.rb', line 54
def hash
[@orders, @framing].hash
end
|
#initialize_copy(other) ⇒ Object
49
50
51
52
|
# File 'lib/arel/nodes/window.rb', line 49
def initialize_copy other
super
@orders = @orders.map { |x| x.clone }
end
|
#order(*expr) ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/arel/nodes/window.rb', line 13
def order *expr
@orders.concat expr.map { |x|
String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x
}
self
end
|
#partition(*expr) ⇒ Object
21
22
23
24
25
26
27
|
# File 'lib/arel/nodes/window.rb', line 21
def partition *expr
@partitions.concat expr.map { |x|
String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x
}
self
end
|
#range(expr = nil) ⇒ Object
41
42
43
44
45
46
47
|
# File 'lib/arel/nodes/window.rb', line 41
def range(expr = nil)
if @framing
Range.new(expr)
else
frame(Range.new(expr))
end
end
|
#rows(expr = nil) ⇒ Object
33
34
35
36
37
38
39
|
# File 'lib/arel/nodes/window.rb', line 33
def rows(expr = nil)
if @framing
Rows.new(expr)
else
frame(Rows.new(expr))
end
end
|