Class: Jumbotron::Workflows::SynchronizeAdapterWorkflow

Inherits:
CommandTower::Workflows::ApplicationWorkflow
  • Object
show all
Defined in:
app/workflows/jumbotron/workflows/synchronize_adapter_workflow.rb

Instance Method Summary collapse

Instance Method Details

#call(adapter:, endpoint:, league_id:, observed_at: nil, acquisition: {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/workflows/jumbotron/workflows/synchronize_adapter_workflow.rb', line 8

def call(adapter:, endpoint:, league_id:, observed_at: nil, acquisition: {})
  observed_at ||= Time.current

  validated = Jumbotron::Services::Adapters::ValidateSyncRequest.call(
    adapter: adapter,
    endpoint: endpoint,
    league_id: league_id
  )
  return map_service_failure(validated, failure_class: "validation") unless validated.success?

  executed = Jumbotron::Services::Adapters::ExecuteEndpoint.call(
    adapter: adapter,
    endpoint: endpoint,
    observed_at: observed_at,
    acquisition: acquisition || {}
  )
  return map_execute_failure(executed) unless executed.success?

  transaction do
    apply_canonical_sync!(
      input: executed.data[:sync_input],
      league: validated.data[:league],
      provider: adapter.provider,
      adapter_scope: "#{adapter.provider}:#{adapter.sport}:#{adapter.league}:#{endpoint}"
    )
  end
end