namespace TeleWave.Domain.Programming;

/// <summary>
/// Наполнение слота: чем заполнять эфир, в каком объёме и с какими врезками. Отделено от расписания
/// слота (<see cref="Slot.UpdateTiming"/>) — это два независимых набора настроек, и правятся они
/// в редакторе тоже раздельно.
/// </summary>
public sealed record SlotContent(
    string Title,
    SlotKind SlotKind,
    /// <summary>Группа контента — только для <see cref="SlotKind.Content"/>, иначе гасится.</summary>
    Guid? GroupId,
    string? StrategyJson,
    string? RepeatSourceJson,
    SlotBlockMode BlockMode,
    int BlockValue,
    OverflowPolicy OverflowPolicy,
    /// <summary>Стык между единицами внутри блока (null — врезок внутри блока нет).</summary>
    Guid? JunctionBetweenId = null,
    /// <summary>Стык в конце блока (null — берётся стык шаблона по умолчанию).</summary>
    Guid? JunctionAfterId = null
);
