Module: Pragma::Macro::Pagination

Defined in:
lib/pragma/macro/pagination.rb

Class Method Summary collapse

Class Method Details

.for(_input, options) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/pragma/macro/pagination.rb', line 12

def for(_input, options)
  set_defaults(options)
  normalize_params(options)

  unless validate_params(options)
    handle_invalid_contract(options)
    return false
  end

  pagination_options = {
    page: page(options, **options),
    per_page: per_page(options, **options)
  }

  options['model'] = if defined?(Kaminari)
    options['model'].page(pagination_options[:page]).per(pagination_options[:per_page])
  elsif defined?(WillPaginate)
    options['model'].paginate(pagination_options)
  else
    fail 'Cannot find a supported pagination adapter (tried Kaminari, will_paginate)!'
  end
end