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