Module: BazaModels::Query::Pagination
- Included in:
- BazaModels::Query
- Defined in:
- lib/baza_models/query/pagination.rb
Instance Method Summary collapse
- #current_page ⇒ Object
- #out_of_bounds? ⇒ Boolean
- #page(some_page = :non_given) ⇒ Object
- #paginated? ⇒ Boolean
- #per(value = :non_given) ⇒ Object (also: #per_page)
- #total_entries ⇒ Object
- #total_pages ⇒ Object
Instance Method Details
#current_page ⇒ Object
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
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
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_entries ⇒ Object
40 41 42 |
# File 'lib/baza_models/query/pagination.rb', line 40 def total_entries @model.count end |
#total_pages ⇒ Object
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 |