class Pagy::Cursor
Attributes
after[R]
arel_table[R]
before[R]
comparation[R]
has_more[RW]
has_more?[RW]
order[R]
position[R]
primary_key[R]
Public Class Methods
new(vars)
click to toggle source
# File lib/pagy_cursor/pagy/cursor.rb, line 8 def initialize(vars) @vars = VARS.merge(vars.delete_if{|_,v| v.nil? || v == '' }) @items = vars[:items] || VARS[:items] @before = vars[:before] @after = vars[:after] @arel_table = vars[:arel_table] @primary_key = vars[:primary_key] @reorder = vars[:order] || {} if @before.present? and @after.present? raise(ArgumentError, 'before and after can not be both mentioned') end if vars[:backend] == 'uuid' @comparation = 'lt' # arel table less than @position = @before @order = @reorder.merge({ :created_at => :desc , @primary_key => :desc }) if @after.present? || (@reorder.present? && @reorder.values.uniq.first.to_sym == :asc) @comparation = 'gt' # arel table greater than @position = @after @order = @reorder.merge({ :created_at => :asc , @primary_key => :asc }) end else @comparation = 'lt' @position = @before @order = @reorder.merge({ @primary_key => :desc }) if @after.present? || (@reorder.present? && @reorder.values.uniq.first.to_sym == :asc) @comparation = 'gt' @position = @after @order = @reorder.merge({ @primary_key => :asc }) end end end