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

Instance Method Details



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 pagination_meta(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_pageObject



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