Class: Qreds::Reducer

Inherits:
Object
  • Object
show all
Defined in:
lib/qreds/reducer.rb

Instance Method Summary collapse

Constructor Details

#initialize(query:, params:, config:, resource_name: query.model.to_s, context: {}) ⇒ Reducer

Returns a new instance of Reducer.

Parameters:

  • query (any)

    the query to be reduced

  • params (Hash)

    with keys being functor names and values the functor arguments.

  • config (Qreds::Config)

    current reducer config

  • resource_name (String) (defaults to: query.model.to_s)

    the name of the resource that query operates on

  • context (any) (defaults to: {})


8
9
10
11
12
13
14
# File 'lib/qreds/reducer.rb', line 8

def initialize(query:, params:, config:, resource_name: query.model.to_s, context: {})
  @query = query
  @params = params
  @config = config
  @resource_name = resource_name
  @context = context
end

Instance Method Details

#callObject



16
17
18
19
20
21
22
# File 'lib/qreds/reducer.rb', line 16

def call
  return query if params.blank?

  params.reduce(query) do |reduced_query, (functor_key, functor_value)|
    functor_instance(functor_key, reduced_query, functor_value).call
  end
end