Module: JsonApiToolbox::Paginable
- Defined in:
- lib/json_api_toolbox/paginable.rb
Constant Summary collapse
- DEFAULT_PER_PAGE =
20
- MAX_PER_PAGE =
100
Instance Method Summary collapse
- #page_links(paginations, entry) ⇒ Object
- #pagination(collection_resource) ⇒ Object
- #pagination_meta(collection_resource) ⇒ Object
- #per_page ⇒ Object
Instance Method Details
#page_links(paginations, entry) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/json_api_toolbox/paginable.rb', line 27 def page_links(paginations, entry) link, page = entry if page paginations.merge(create_page_link(link, page)) else paginations end end |
#pagination(collection_resource) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/json_api_toolbox/paginable.rb', line 18 def pagination(collection_resource) { first: 1, last: collection_resource.total_pages, prev: collection_resource.previous_page, next: collection_resource.next_page }.reduce({}, &method(:page_links)) end |
#pagination_meta(collection_resource) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/json_api_toolbox/paginable.rb', line 8 def (collection_resource) { 'current-page': collection_resource.current_page, 'next-page': collection_resource.next_page, 'prev-page': collection_resource.previous_page, 'total-pages': collection_resource.total_pages, 'total-count': collection_resource.total_entries } end |
#per_page ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/json_api_toolbox/paginable.rb', line 36 def per_page return DEFAULT_PER_PAGE if params[:per_page].nil? per_page_limit = (ENV['MAX_PER_PAGE'] || MAX_PER_PAGE).to_i [per_page_limit, params[:per_page].to_i].min end |