class WindowExpression
Constants
- S_ORDER_BY
- S_PARTITION_BY
- S_RANGE
- S_UNBOUNDED
- S_WINDOW
Public Class Methods
new(&block)
click to toggle source
# File lib/eno/expressions.rb, line 399 def initialize(&block) instance_eval(&block) end
Public Instance Methods
_order_by_clause(sql)
click to toggle source
# File lib/eno/expressions.rb, line 434 def _order_by_clause(sql) return nil unless @order_by S_ORDER_BY % @order_by.map { |e| sql.quote(e) }.join(S_COMMA) end
_partition_by_clause(sql)
click to toggle source
# File lib/eno/expressions.rb, line 429 def _partition_by_clause(sql) return nil unless @partition_by S_PARTITION_BY % @partition_by.map { |e| sql.quote(e) }.join(S_COMMA) end
_range_clause(sql)
click to toggle source
# File lib/eno/expressions.rb, line 439 def _range_clause(sql) return nil unless @range S_RANGE % @range end
method_missing(sym)
click to toggle source
Calls superclass method
# File lib/eno/expressions.rb, line 444 def method_missing(sym) super if sym == :to_hash Identifier.new(sym) end
order_by(*args)
click to toggle source
# File lib/eno/expressions.rb, line 407 def order_by(*args) @order_by = args end
partition_by(*args)
click to toggle source
# File lib/eno/expressions.rb, line 403 def partition_by(*args) @partition_by = args end
range_unbounded()
click to toggle source
# File lib/eno/expressions.rb, line 417 def range_unbounded @range = S_UNBOUNDED end
to_sql(sql)
click to toggle source
# File lib/eno/expressions.rb, line 421 def to_sql(sql) S_WINDOW % [ _partition_by_clause(sql), _order_by_clause(sql), _range_clause(sql) ].join.strip end