Module: Rack::Reducer
- Defined in:
- lib/rack/reducer.rb,
lib/rack/reducer/parser.rb,
lib/rack/reducer/reduction.rb,
lib/rack/reducer/middleware.rb,
lib/rack/reducer/refinements.rb
Overview
Use request params to apply filters to a dataset
Defined Under Namespace
Modules: Parser, Refinements Classes: Middleware, Reduction
Class Method Summary collapse
-
.call(params, dataset:, filters:) ⇒ Object
Call Rack::Reducer as a function.
-
.new(app, options = {}) ⇒ Object
Mount Rack::Reducer as middleware.
Instance Method Summary collapse
-
#reduce(params) ⇒ Object
Extend Rack::Reducer to get ‘reduce` and `reduces` as class-methods.
- #reduces(dataset, filters:) ⇒ Object
Class Method Details
.call(params, dataset:, filters:) ⇒ Object
Call Rack::Reducer as a function
11 12 13 14 15 16 17 |
# File 'lib/rack/reducer.rb', line 11 def self.call(params, dataset:, filters:) Reduction.new( params: params, filters: filters, dataset: dataset ).reduce end |
.new(app, options = {}) ⇒ Object
Mount Rack::Reducer as middleware
20 21 22 |
# File 'lib/rack/reducer.rb', line 20 def self.new(app, = {}) Middleware.new(app, ) end |
Instance Method Details
#reduce(params) ⇒ Object
Extend Rack::Reducer to get ‘reduce` and `reduces` as class-methods
class Artist < SomeORM::Model
extend Rack::Reducer
reduces self.all, filters: [
lambda { |name:| where(name: name) },
lambda { |genre:| where(genre: genre) },
]
end
33 34 35 36 37 38 39 |
# File 'lib/rack/reducer.rb', line 33 def reduce(params) Reduction.new( params: params, filters: @rack_reducer_filters, dataset: @rack_reducer_dataset ).reduce end |
#reduces(dataset, filters:) ⇒ Object
41 42 43 44 |
# File 'lib/rack/reducer.rb', line 41 def reduces(dataset, filters:) @rack_reducer_dataset = dataset @rack_reducer_filters = filters end |