Class: MatchReduce::Processor::ResultsBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/match_reduce/processor/results_builder.rb

Overview

This class knows how to group together aggregators in order to produce results.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(aggregators, resolver) ⇒ ResultsBuilder

Returns a new instance of ResultsBuilder.

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
# File 'lib/match_reduce/processor/results_builder.rb', line 18

def initialize(aggregators, resolver)
  raise ArgumentError, 'aggregators are required' unless aggregators

  @result_by_name = aggregators.map { |a| [a.name, ResultBuilder.new(a, resolver)] }.to_h
  @resolver       = resolver

  freeze
end

Instance Attribute Details

#resolverObject (readonly)

Returns the value of attribute resolver.



16
17
18
# File 'lib/match_reduce/processor/results_builder.rb', line 16

def resolver
  @resolver
end

Instance Method Details

#add(aggregator, record, group_id) ⇒ Object



27
28
29
# File 'lib/match_reduce/processor/results_builder.rb', line 27

def add(aggregator, record, group_id)
  tap { result_by_name[aggregator.name].add(record, group_id) }
end

#resultsObject



31
32
33
# File 'lib/match_reduce/processor/results_builder.rb', line 31

def results
  result_by_name.values.map(&:result)
end