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