Class: Right::SortParametersExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/right/sort_parameters_extractor.rb

Overview

User provided sorting syntax:

* `name` - sort by name
* `-name` - sort by name in reversed order
* `-name,created_at` - sort by name in reversed order, and then sort by created_at

This middleware parses sorting string and builds Parameter array If user passes not defined sort order, it yields to UndefinedParameter, so you may validate it.

See Also:

  • Right::Sort::Parameter

Instance Method Summary collapse

Constructor Details

#initialize(app, parameters_definition) ⇒ SortParametersExtractor



17
18
19
20
# File 'lib/right/sort_parameters_extractor.rb', line 17

def initialize(app, parameters_definition)
  @app = app
  @parameters_definition = parameters_definition
end

Instance Method Details

#call(env) ⇒ <<Right::RansackableSort::SortParameter, []>]



27
28
29
30
31
32
33
34
35
# File 'lib/right/sort_parameters_extractor.rb', line 27

def call(env)
  params, errors = env

  sort_params = sort_order(params[:sort]).map do |(attribute, direction)|
    extract_parameter(attribute, direction)
  end

  app.call([params.merge(sort: sort_params), errors])
end