CartoDB/cartodb20

View on GitHub
lib/cartodb/pagination.rb

Summary

Maintainability
A
45 mins
Test Coverage
module CartoDB
  class Pagination
    def self.get_page_and_per_page(options = {})
      per_page = (options[:rows_per_page] || 10).to_i
      per_page = 5000 if per_page > 5000
      # Allow to set the page number as a range between two pages
      if options[:page] && options[:page].is_a?(String) && options[:page].include?('..')
        first_page, last_page = options[:page].split('..')
        last_page = 1 if last_page.to_i < 1
        page = first_page.to_i*per_page
        per_page = (last_page.to_i - first_page.to_i + 1) *per_page
      else
        page = (options[:page] || 0).to_i*per_page
      end
      return [page, per_page]
    end
  end
end