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)
    data.each { |row| row[version_key] = version }

    target_keys = config.target_keys(data: data)

    validate_data(data, target_keys: target_keys)

    data.sort_by! { |row| row.values_at(*target_keys).to_s }

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

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

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