Module: JSONAPIHelpers::Params::Sort

Defined in:
lib/jsonapi_helpers/params/sort.rb

Class Method Summary collapse

Class Method Details

.build(sort, allowed, default) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/jsonapi_helpers/params/sort.rb', line 6

def self.build(sort, allowed, default)
  allowed = allowed.map(&:to_s)
  fields = sort.to_s.split(',')

  ordered_fields = convert_to_ordered_hash(fields)
  filtered_fields = ordered_fields.select { |key, _value| allowed.include?(key) }
  filtered_fields.empty? ? default : filtered_fields
end

.convert_to_ordered_hash(fields) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/jsonapi_helpers/params/sort.rb', line 15

def self.convert_to_ordered_hash(fields)
  fields.each_with_object({}) do |field, hash|
    if field.start_with?('-')
      field = StringSupport.underscore(field[1..-1])
      hash[field] = :desc
    else
      hash[StringSupport.underscore(field)] = :asc
    end
  end
end