Class: TableSync::Receiving::Handler

Inherits:
Rabbit::EventHandler
  • Object
show all
Extended by:
DSL
Defined in:
lib/table_sync/receiving/handler.rb

Instance Method Summary collapse

Methods included from DSL

inherited, receive

Instance Method Details

#callObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/table_sync/receiving/handler.rb', line 11

def call
  configs.each do |config|
    next unless config.allow_event?(event)

    data = processed_data(config)

    next if data.empty?

    version_key = config.version_key(data:)
    data.each { |row| row[version_key] = version }

    target_keys = config.target_keys(data:)

    validate_data(data, target_keys:)

    data.sort_by! { |row| row.values_at(*target_keys).map { |value| sort_key(value) } }

    params = { data:, target_keys:, version_key: }

    if event == :update
      params[:default_values] = config.default_values(data:)
    end

    config.wrap_receiving(event:, **params) do
      perform(config, params)
    end
  end
end