Module: BazaModels::Query::Pagination

Included in:
BazaModels::Query
Defined in:
lib/baza_models/query/pagination.rb

Instance Method Summary collapse

Instance Method Details

#current_pageObject



2
3
4
5
6
# 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?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/baza_models/query/pagination.rb', line 8

def out_of_bounds?
  current_page > total_pages
end

#page(some_page = :non_given) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# 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?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/baza_models/query/pagination.rb', line 24

def paginated?
  @page != nil
end

#per(value = :non_given) ⇒ Object Also known as: per_page



28
29
30
31
32
33
34
35
36
# 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

#total_entriesObject



40
41
42
# File 'lib/baza_models/query/pagination.rb', line 40

def total_entries
  @model.count
end

#total_pagesObject



44
45
46
47
48
49
50
51
# 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