class CursorPaginator::PaginationResult

Attributes

paginator[R]
records_scope[R]

Public Class Methods

new(records_scope, paginator) click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 9
def initialize(records_scope, paginator)
  @records_scope = records_scope
  @paginator = paginator
end

Public Instance Methods

last_page?() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 22
def last_page?
  additional_record.blank?
end
next_cursor_params() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 18
def next_cursor_params
  { after: next_cursor }
end
prev_cursor_params() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 14
def prev_cursor_params
  { before: prev_cursor }
end

Private Instance Methods

additional_record() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 50
def additional_record
  load_records if @records.nil?

  @additional_record
end
fetch_cursor(record) click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 42
def fetch_cursor(record)
  record.public_send(paginator.paginator_options.fetch(:primary_key))
end
load_records() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 56
def load_records
  records = records_scope.take(paginator.page_size + 1)
  @additional_record = records.pop if records.size > paginator.page_size
  paginator.cursor_direction.after? ? records : records.reverse
end
next_cursor() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 35
def next_cursor
  return if paginator.cursor_direction.after? && last_page?
  return if records.empty?

  fetch_cursor(records.last)
end
prev_cursor() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 28
def prev_cursor
  return if paginator.cursor_direction.before? && last_page?
  return if records.empty?

  fetch_cursor(records.first)
end
records() click to toggle source
# File lib/cursor_paginator/pagination_result.rb, line 46
def records
  @records ||= load_records
end