module JSONAPI::Support::Pagination

def apply_pagination

def apply_pagination
  return @scope if page_params.empty?
  offset, size = calculate_pagination_params
  paginate_scope(offset, size)
end

def calculate_pagination_params

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)

def paginate_scope(offset, size)
  return @scope.slice(offset, size) || [] if @scope.is_a?(Array)
  @scope.offset(offset).limit(size)
end