Module: EnotasApi::Sortable::ClassMethods

Defined in:
lib/enotas_api/support/sortable.rb

Constant Summary collapse

DIRECTIONS =
i[asc desc].freeze

Instance Method Summary collapse

Instance Method Details

#sortable(fields) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/enotas_api/support/sortable.rb', line 12

def sortable(fields)
  define_method :sort do |field, direction|
    raise EnotasApi::Error, "Unsupported sort field '#{field}', valid sort fields are #{fields}." unless fields.include?(field)
    raise EnotasApi::Error, "Unsupported direction '#{direction}'', valid directions are #{DIRECTIONS}." unless DIRECTIONS.include?(direction)

    param(:sortBy, field).param(:sortDirection, direction)
  end

  fields.each do |field|
    define_method "sort_by_#{field}" do |direction = :asc|
      sort(field, direction)
    end
  end
end