Module: API::Helpers::PaginationStrategies

Included in:
API::Helpers
Defined in:
lib/api/helpers/pagination_strategies.rb

Instance Method Summary collapse

Instance Method Details

#paginate_with_strategies(relation, request_scope = nil, paginator_params: {}) ⇒ Object

paginator_params are only currently supported with offset pagination



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/api/helpers/pagination_strategies.rb', line 7

def paginate_with_strategies(relation, request_scope = nil, paginator_params: {})
  paginator = paginator(relation, request_scope)

  result = if block_given?
             yield(paginator.paginate(relation, **paginator_params))
           else
             paginator.paginate(relation, **paginator_params)
           end

  result.tap do |records, _|
    paginator.finalize(records)
  end
end

#paginator(relation, request_scope = nil) ⇒ Object



21
22
23
24
25
# File 'lib/api/helpers/pagination_strategies.rb', line 21

def paginator(relation, request_scope = nil)
  return keyset_paginator(relation) if keyset_pagination_enabled?

  offset_paginator(relation, request_scope)
end