module Streams # Garantisce che la slate MP4 esista per il record effettivo della partita (sync al go-live). class CoverSlateEnsurer def self.ensure_for!(match) new(match).ensure! end def initialize(match) @match = match @resolver = CoverResolver.new(match) end def ensure! result = @resolver.resolve return unless result record = result.record return if slate_ready?(record) GenerateCoverSlate.call(record) rescue GenerateCoverSlate::Error => e Rails.logger.warn("[CoverSlateEnsurer] match=#{@match.id} #{e.message}") nil end private def slate_ready?(record) return false unless record.cover_slate.attached? path = CoverSlatePaths.local_path_for(record) path.present? && File.exist?(path) end end end