Class: Dionysus::Producer::Outbox::DuplicatesFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/dionysus/producer/outbox/duplicates_filter.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(records_to_publish) ⇒ DuplicatesFilter

Returns a new instance of DuplicatesFilter.



15
16
17
# File 'lib/dionysus/producer/outbox/duplicates_filter.rb', line 15

def initialize(records_to_publish)
  @records_to_publish = records_to_publish
end

Class Method Details

.call(records_to_publish) ⇒ Object



4
5
6
# File 'lib/dionysus/producer/outbox/duplicates_filter.rb', line 4

def self.call(records_to_publish)
  new(records_to_publish).call
end

.deduplicated_records(records_to_publish) ⇒ Object



8
9
10
# File 'lib/dionysus/producer/outbox/duplicates_filter.rb', line 8

def self.deduplicated_records(records_to_publish)
  new(records_to_publish).deduplicated_records
end

Instance Method Details

#callObject



19
20
21
# File 'lib/dionysus/producer/outbox/duplicates_filter.rb', line 19

def call
  consecutive_runs.flat_map(&:last)
end

#deduplicated_recordsObject

The survivor of every run that collapsed something: the record was written again while an earlier message for it was still queued.



25
26
27
# File 'lib/dionysus/producer/outbox/duplicates_filter.rb', line 25

def deduplicated_records
  consecutive_runs.select { |run| run.size > 1 }.map(&:last)
end