Module: Eluvia::PaginationHandler

Extended by:
ActiveSupport::Concern
Defined in:
lib/eluvia/handlers/pagination_handler.rb

Instance Method Summary collapse

Instance Method Details

#set_pagination(default_limit: 20, default_offset: 0, default_order_by: 'created_at:asc', fallback_order_by: 'created_at:asc', force_order_by: false) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/eluvia/handlers/pagination_handler.rb', line 5

def set_pagination(default_limit: 20, default_offset: 0, default_order_by: 'created_at:asc', fallback_order_by: 'created_at:asc', force_order_by: false)

  # Pagination
  @limit = params[:limit] ? params[:limit].to_i : default_limit
  @offset = params[:offset] ? params[:offset].to_i : default_offset
  @page = (@offset / @limit) + 1
  @padding = @offset % @limit

  # Order by
  @order_by = {}
  order_by_param = Eluvia::Base::Config.api_case == 'camel_case' ? :orderBy : :order_by
  order_by = "#{!force_order_by && params.key?(order_by_param) ? params[order_by_param] : default_order_by},#{fallback_order_by}"
  order_by.to_s.split(',').each do |o|
    s = o.to_s.split(':')
    @order_by[s.first] = s.length >= 2 && s[1].downcase == 'desc' ? :desc : :asc
  end

end