class ApiMe::Pagination
Attributes
page_offset[RW]
page_size[RW]
scope[RW]
Public Class Methods
new(scope:, page_params:)
click to toggle source
# File lib/api_me/pagination.rb, line 7 def initialize(scope:, page_params:) self.scope = scope return unless page_params self.page_size = page_params[:size] self.page_offset = page_params[:offset] end
Public Instance Methods
page_meta()
click to toggle source
# File lib/api_me/pagination.rb, line 18 def page_meta # rubocop:disable Metrics/MethodLength return {} unless paging? { size: page_meta_size, offset: page_offset, record_count: scope.size, total_records: scope.total_count, total_pages: scope.total_pages, iteration_count_start: iteration_count_start, iteration_count_end: iteration_count_end, current_iteration_count: current_iteration_count } end
results()
click to toggle source
# File lib/api_me/pagination.rb, line 14 def results paging? ? page.per.scope : scope end
Protected Instance Methods
current_iteration_count()
click to toggle source
# File lib/api_me/pagination.rb, line 46 def current_iteration_count iteration_count_start - iteration_count_offset end
iteration_count_end()
click to toggle source
# File lib/api_me/pagination.rb, line 38 def iteration_count_end page_size.to_i * page_offset.to_i end
iteration_count_offset()
click to toggle source
# File lib/api_me/pagination.rb, line 42 def iteration_count_offset scope.total_count < iteration_count_end ? scope.total_count : iteration_count_end end
iteration_count_start()
click to toggle source
# File lib/api_me/pagination.rb, line 34 def iteration_count_start (page_size.to_i * (page_offset.to_i - 1)) + 1 end
page()
click to toggle source
# File lib/api_me/pagination.rb, line 54 def page self.scope = scope.page(page_offset ? page_offset : 1) self end
page_meta_size()
click to toggle source
# File lib/api_me/pagination.rb, line 50 def page_meta_size page_size.nil? ? default_page_size : page_size end
per()
click to toggle source
# File lib/api_me/pagination.rb, line 59 def per self.scope = scope.per(page_size) if page_size self end
Private Instance Methods
default_page_size()
click to toggle source
# File lib/api_me/pagination.rb, line 66 def default_page_size Kaminari.config.default_per_page end
paging?()
click to toggle source
# File lib/api_me/pagination.rb, line 70 def paging? page_size || page_offset end