module BazaModels::Query::Pagination

Public Instance Methods

current_page() click to toggle source
# File lib/baza_models/query/pagination.rb, line 2
def current_page
  raise "Page has not been set" unless @page

  @page
end
out_of_bounds?() click to toggle source
# File lib/baza_models/query/pagination.rb, line 8
def out_of_bounds?
  current_page > total_pages
end
page(some_page = :non_given) click to toggle source
# File lib/baza_models/query/pagination.rb, line 12
def page(some_page = :non_given)
  if some_page == :non_given
    @page ||= 1
  else
    some_page ||= 1
    some_page = some_page.to_i
    offset = (some_page - 1) * per

    clone(page: some_page, offset: offset, limit: per)
  end
end
paginated?() click to toggle source
# File lib/baza_models/query/pagination.rb, line 24
def paginated?
  @page != nil
end
per(value = :non_given) click to toggle source
# File lib/baza_models/query/pagination.rb, line 28
def per(value = :non_given)
  if value == :non_given
    @per ||= 30
  else
    value = value.to_i
    offset = (page - 1) * value
    clone(limit: value, offset: offset, per: value)
  end
end
Also aliased as: per_page
per_page(value = :non_given)
Alias for: per
total_entries() click to toggle source
# File lib/baza_models/query/pagination.rb, line 40
def total_entries
  @model.count
end
total_pages() click to toggle source
# File lib/baza_models/query/pagination.rb, line 44
def total_pages
  pages_count = (count.to_f / per)

  pages_count = 1 if pages_count.nan? || pages_count == Float::INFINITY
  pages_count = pages_count.ceil
  pages_count = 1 if pages_count.zero?
  pages_count
end