Sha256: c08ae1643e4b7ae875bc93a46388647c55fbada043d550882c58e877f36f99eb

Contents?: true

Size: 779 Bytes

Versions: 6

Compression:

Stored size: 779 Bytes

Contents

module JsonapiCompliable
  class Scoping::Paginate < Scoping::Base
    MAX_PAGE_SIZE = 1_000

    def apply
      if size > MAX_PAGE_SIZE
        raise JsonapiCompliable::Errors::UnsupportedPageSize
          .new(size, MAX_PAGE_SIZE)
      else
        super
      end
    end

    def custom_scope
      resource.pagination
    end

    def apply_standard_scope
      resource.adapter.paginate(@scope, number, size)
    end

    def apply_custom_scope
      custom_scope.call(@scope, number, size)
    end

    private

    def page_param
      @page_param ||= (query_hash[:page] || {})
    end

    def number
      (page_param[:number] || resource.default_page_number).to_i
    end

    def size
      (page_param[:size] || resource.default_page_size).to_i
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
jsonapi_compliable-0.5.6 lib/jsonapi_compliable/scoping/paginate.rb
jsonapi_compliable-0.5.5 lib/jsonapi_compliable/scoping/paginate.rb
jsonapi_compliable-0.5.4 lib/jsonapi_compliable/scoping/paginate.rb
jsonapi_compliable-0.5.3 lib/jsonapi_compliable/scoping/paginate.rb
jsonapi_compliable-0.5.2 lib/jsonapi_compliable/scoping/paginate.rb
jsonapi_compliable-0.5.1 lib/jsonapi_compliable/scoping/paginate.rb