Sha256: f86e447dbc98db56a8f2adb085c27d93f8642ff2f5983947cee7666f9bfd8b13

Contents?: true

Size: 792 Bytes

Versions: 21

Compression:

Stored size: 792 Bytes

Contents

module Api
  module Paginable
    extend ActiveSupport::Concern

    LINK = 'Link'.freeze

    included do
      class_attribute :max_page_size
      class_attribute :default_page_size
      class_attribute :default_order

      self.max_page_size = 100
      self.default_page_size = 30
      self.default_order = {id: :desc}.freeze
    end

    private

    def render_resources(resource, *)
      paginator = Shipit::Paginator.new(
        resource,
        self,
        order: default_order,
        max_page_size: max_page_size,
        default_page_size: default_page_size,
      )
      headers[LINK] = render_links(paginator.links)
      super(paginator.to_a)
    end

    def render_links(links)
      links.map { |rel, url| %(<#{url}>; rel="#{rel}") }.join(', ')
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
shipit-engine-0.5.2 app/controllers/concerns/api/paginable.rb
shipit-engine-0.5.1 app/controllers/concerns/api/paginable.rb
shipit-engine-0.5.0 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.10 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.9 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.8 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.7 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.6 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.5 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.4 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.3 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.2 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.1 app/controllers/concerns/api/paginable.rb
shipit-engine-0.4.0 app/controllers/concerns/api/paginable.rb
shipit-engine-0.3.1 app/controllers/concerns/api/paginable.rb
shipit-engine-0.3.0 app/controllers/concerns/api/paginable.rb
shipit-engine-0.2.3 app/controllers/concerns/api/paginable.rb
shipit-engine-0.2.2 app/controllers/concerns/api/paginable.rb
shipit-engine-0.2.1 app/controllers/concerns/api/paginable.rb
shipit-engine-0.2.0 app/controllers/concerns/api/paginable.rb