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 (default_limit: 20, default_offset: 0, default_order_by: 'created_at:asc', fallback_order_by: 'created_at:asc', force_order_by: false)
@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_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
|