turniere-backend/app/services/beamer_broadcast_payload.rb

38 lines
807 B
Ruby

# frozen_string_literal: true
class BeamerBroadcastPayload
class << self
def build(event:, beamer: nil, snapshot: nil)
data = snapshot || self.snapshot(beamer)
{
type: "beamer.#{event}",
event:,
tournament_id: data.fetch(:tournament_id),
beamer: serialized_beamer(data)
}
end
def snapshot(beamer)
{
id: beamer.id,
tournament_id: beamer.tournament_id,
name: beamer.name,
display_state: beamer.display_state,
config: beamer.config
}
end
private
def serialized_beamer(snapshot)
{
id: snapshot.fetch(:id),
name: snapshot.fetch(:name),
display_state: snapshot.fetch(:display_state),
config: snapshot.fetch(:config)
}
end
end
end