lucassus/mongo_browser

View on GitHub
lib/mongo_browser/models/pager.rb

Summary

Maintainability
A
0 mins
Test Coverage
module MongoBrowser
  module Models
    class Pager
      PER_PAGE = 25

      attr_reader :page
      attr_reader :size

      def initialize(page, size)
        @size = size
        @page = if page.to_i <= 0 then
                  1
                else
                  [page.to_i, total_pages].min
                end
      end

      def per_page
        PER_PAGE
      end

      def offset
        (page - 1) * per_page
      end

      def total_pages
        if size == 0 then
          1
        else
          (size.to_f / per_page).ceil
        end
      end

      def to_hash
        {
            size: size,
            page: page,
            total_pages: total_pages
        }
      end
    end
  end
end