lib/json_api/support/concerns/pagination.rb
# frozen_string_literal: true module JSONAPI module Support module Pagination def apply_pagination return @scope if page_params.empty? offset, size = calculate_pagination_params paginate_scope(offset, size) end private def calculate_pagination_params number = page_params["number"]&.to_i || 1 size = page_params["size"]&.to_i || JSONAPI.configuration.default_page_size size = [size, JSONAPI.configuration.max_page_size].min offset = (number - 1) * size [offset, size] end def paginate_scope(offset, size) return @scope.slice(offset, size) || [] if @scope.is_a?(Array) @scope.offset(offset).limit(size) end end end end