Class: Jumbotron::Workflows::ReadGameWorkflow

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

Instance Method Summary collapse

Methods included from PublicRead

#map_deserializer_failure, #map_service_failure

Instance Method Details

#call(**kwargs) ⇒ Object



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

def call(**kwargs)
  deserialized = Deserializers::Public::Game.call(kwargs)
  return map_deserializer_failure(deserialized) unless deserialized.success?

  request = deserialized.input
  read = Services::Public::ReadGame.call(game_id: request.id)
  return map_service_failure(read) unless read.success?

  game = read.data[:game]
  included = Services::Public::LoadIncludedLines.call(games: [game], includes: request.includes)
  return map_service_failure(included) unless included.success?

  assembled = Services::Public::AssemblePublicGame.call(
    game: game,
    includes: request.includes,
    current_lines: included.data[:current_lines],
    consensus_lines: included.data[:consensus_lines]
  )
  return map_service_failure(assembled) unless assembled.success?

  success(payload: { game: assembled.data[:public_game] }, http_status: :ok)
end