lib/api_me/pagination.rb in api_me-0.9.4 vs lib/api_me/pagination.rb in api_me-0.10.0

- old
+ new

@@ -1,39 +1,56 @@ +# frozen_string_literal: true + module ApiMe class Pagination attr_accessor :page_size, :page_offset, :scope def initialize(scope:, page_params:) self.scope = scope - - if page_params - self.page_size = page_params[:size] - self.page_offset = page_params[:offset] - end + return unless page_params + self.page_size = page_params[:size] + self.page_offset = page_params[:offset] end def results paging? ? page.per.scope : scope end - def page_meta + def page_meta # rubocop:disable Metrics/MethodLength return {} unless paging? - iteration_count_start = (page_size.to_i * (page_offset.to_i - 1)) + 1 - iteration_count_end = page_size.to_i * page_offset.to_i - iteration_count_offset = scope.total_count < iteration_count_end ? scope.total_count : iteration_count_end { - size: page_size.nil? ? default_page_size : page_size, + 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: iteration_count_start - iteration_count_offset + current_iteration_count: current_iteration_count } end protected + + def iteration_count_start + (page_size.to_i * (page_offset.to_i - 1)) + 1 + end + + def iteration_count_end + page_size.to_i * page_offset.to_i + end + + def iteration_count_offset + scope.total_count < iteration_count_end ? scope.total_count : iteration_count_end + end + + def current_iteration_count + iteration_count_start - iteration_count_offset + end + + def page_meta_size + page_size.nil? ? default_page_size : page_size + end def page self.scope = scope.page(page_offset ? page_offset : 1) self end