module ActiveRecordExtended::QueryMethods::Window

Public Instance Methods

build_windows(arel) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 82
def build_windows(arel)
  window_values.each do |window_value|
    window = arel.window(window_value[:window_name])
    window = window.partition(window_value[:partition_by]) if window_value[:partition_by].present?
    window.order(window_value[:order_by])                  if window_value[:order_by]
  end
end
define_window(name) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 62
def define_window(name)
  spawn.define_window!(name)
end
define_window!(name) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 66
def define_window!(name)
  DefineWindowChain.new(self, name)
end
select_window(window_function, *args, over:, as: nil) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 70
def select_window(window_function, *args, over:, as: nil)
  spawn.select_window!(window_function, args, over: over, as: as)
end
select_window!(window_function, *args, over:, as: nil) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 74
def select_window!(window_function, *args, over:, as: nil)
  args.flatten!
  args.compact!

  select_statement = WindowSelectBuilder.new(window_function, args, over).build_select(as)
  _select!(select_statement)
end
window_values() click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 46
def window_values
  @values.fetch(:window, [])
end
window_values!() click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 50
def window_values!
  @values[:window] ||= []
end
window_values=(*values) click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 58
def window_values=(*values)
  @values[:window] = values.flatten(1)
end
window_values?() click to toggle source
# File lib/active_record_extended/query_methods/window.rb, line 54
def window_values?
  !window_values.empty?
end