Sha256: 805cc203b7f02f088e471f541647cc198d4d29974b8e1d55861f2aa4ecde29be

Contents?: true

Size: 880 Bytes

Versions: 2

Compression:

Stored size: 880 Bytes

Contents

require 'kaminari'
require 'kaminari/models/array_extension'

module Westfield
  class Paginator
    def initialize(records, page: nil, per_page: nil, max_per_page: nil)
      @page_info = Westfield::PageInfo.new(page: page, per_page: per_page, max_per_page: max_per_page)

      if records.is_a? Array
        @records = Kaminari.paginate_array(records)
      else
        @records  = records
      end
    end

    def paginated_records
      @paginated ||= @records.page(page_info.page).per(page_info.per_page)
    end

    def meta
      PaginatorMeta.new(self).as_json
    end

    def current_page
      paginated_records.current_page
    end

    def per_page
      page_info.per_page
    end

    def total_pages
      paginated_records.total_pages
    end

    def total_count
      paginated_records.total_count
    end

    private
    attr_reader :page_info
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
westfield_paginator-1.0.7 lib/westfield_paginator/paginator.rb
westfield_paginator-1.0.6 lib/westfield_paginator/paginator.rb