Class: IntercomExport::Coordinator

Inherits:
Object
  • Object
show all
Defined in:
lib/intercom_export/coordinator.rb

Defined Under Namespace

Modules: EnumeratorLazyUniqParts

Instance Method Summary collapse

Constructor Details

#initialize(source:, splitter:, finder:, differ:, executor:) ⇒ Coordinator

Returns a new instance of Coordinator.



19
20
21
22
23
24
25
# File 'lib/intercom_export/coordinator.rb', line 19

def initialize(source:, splitter:, finder:, differ:, executor:)
  @source = source
  @splitter = splitter
  @finder = finder
  @differ = differ
  @executor = executor
end

Instance Method Details

#runObject



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/intercom_export/coordinator.rb', line 27

def run
  source.lazy.flat_map { |source|
    splitter.split(source)
  }.uniq.map { |source_object|
    [source_object, finder.find(source_object)]
  }.map { |source_object, remote_object|
    differ.diff(source_object, remote_object)
  }.each { |commands|
    executor.call(commands)
  }
end