Sha256: d5ceb5217c4f8663dbded709a2b40e4e5a1a3f19fd616bb9d9003a6df8956009
Contents?: true
Size: 1.46 KB
Versions: 8
Compression:
Stored size: 1.46 KB
Contents
module Arel module Nodes class Window < Arel::Nodes::Node include Arel::Expression attr_accessor :orders, :framing def initialize @orders = [] end def order *expr # FIXME: We SHOULD NOT be converting these to SqlLiteral automatically @orders.concat expr.map { |x| String === x || Symbol === x ? Nodes::SqlLiteral.new(x.to_s) : x } self end def frame(expr) raise ArgumentError, "Window frame cannot be set more than once" if @frame @framing = expr end def rows(expr = nil) frame(Rows.new(expr)) end def range(expr = nil) frame(Range.new(expr)) end def initialize_copy other super @orders = @orders.map { |x| x.clone } end end class NamedWindow < Window attr_accessor :name def initialize name super() @name = name end def initialize_copy other super @name = other.name.clone end end class Rows < Unary def initialize(expr = nil) super(expr) end end class Range < Unary def initialize(expr = nil) super(expr) end end class CurrentRow < Arel::Nodes::Node; end class Preceding < Unary def initialize(expr = nil) super(expr) end end class Following < Unary def initialize(expr = nil) super(expr) end end end end
Version data entries
8 entries across 3 versions & 3 rubygems