class Pagy

Public Instance Methods

pagy_cursor_get_items(collection, pagy, position=nil) click to toggle source
# File lib/pagy_cursor/pagy/extras/cursor.rb, line 23
def pagy_cursor_get_items(collection, pagy, position=nil)
  if position.present?
    sql_comparation = pagy.arel_table[pagy.primary_key].send(pagy.comparation, position)
    collection.where(sql_comparation).reorder(pagy.order).limit(pagy.items)
  else
    collection.reorder(pagy.order).limit(pagy.items)
  end
end
pagy_cursor_get_vars(collection, vars) click to toggle source
# File lib/pagy_cursor/pagy/extras/cursor.rb, line 16
def pagy_cursor_get_vars(collection, vars)
  vars[:arel_table] = collection.arel_table
  vars[:primary_key] = collection.primary_key
  vars[:backend] = 'sequence'
  vars
end
pagy_cursor_has_more?(collection, pagy) click to toggle source
# File lib/pagy_cursor/pagy/extras/cursor.rb, line 32
def pagy_cursor_has_more?(collection, pagy)
  return false if collection.empty?

  next_position = collection.last[pagy.primary_key]
  pagy_cursor_get_items(collection, pagy, next_position).exists?
end
pagy_uuid_cursor_get_items(collection, pagy, position=nil) click to toggle source
# File lib/pagy_cursor/pagy/extras/uuid_cursor.rb, line 22
def pagy_uuid_cursor_get_items(collection, pagy, position=nil)
  if position.present?
    arel_table = pagy.arel_table

    select_created_at = arel_table.project(arel_table[:created_at]).where(arel_table[pagy.primary_key].eq(position))
    select_the_sample_created_at = arel_table[:created_at].eq(select_created_at).and(arel_table[pagy.primary_key].send(pagy.comparation, position))
    sql_comparation = arel_table[:created_at].send(pagy.comparation, select_created_at).or(select_the_sample_created_at)

    collection = collection.where(sql_comparation)
  end
  collection.reorder(pagy.order).limit(pagy.items)
end
pagy_uuid_cursor_get_vars(collection, vars) click to toggle source
# File lib/pagy_cursor/pagy/extras/uuid_cursor.rb, line 15
def pagy_uuid_cursor_get_vars(collection, vars)
  vars[:arel_table] = collection.arel_table
  vars[:primary_key] = collection.primary_key
  vars[:backend] = 'uuid'
  vars
end
pagy_uuid_cursor_has_more?(collection, pagy) click to toggle source
# File lib/pagy_cursor/pagy/extras/uuid_cursor.rb, line 35
def pagy_uuid_cursor_has_more?(collection, pagy)
  return false if collection.empty?

  next_position = collection.last[pagy.primary_key]
  pagy_uuid_cursor_get_items(collection, pagy, next_position).exists?
end