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
7
8
# File 'lib/baza_models/query/pagination.rb', line 2

def current_page
  if @page
    @page
  else
    raise "Page has not been set"
  end
end

#out_of_bounds?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/baza_models/query/pagination.rb', line 10

def out_of_bounds?
  current_page > total_pages
end

#page(some_page = :non_given) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/baza_models/query/pagination.rb', line 14

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)


26
27
28
# File 'lib/baza_models/query/pagination.rb', line 26

def paginated?
  @page != nil
end

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



30
31
32
33
34
35
36
37
38
# File 'lib/baza_models/query/pagination.rb', line 30

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



42
43
44
# File 'lib/baza_models/query/pagination.rb', line 42

def total_entries
  @model.count
end

#total_pagesObject



46
47
48
49
50
51
52
53
# File 'lib/baza_models/query/pagination.rb', line 46

def total_pages
  pages_count = (count.to_f / per.to_f)

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