using LiteCqrs;
using TeleWave.Application.Common.Models;

namespace TeleWave.Application.Programming.Templates.Restore;

/// <summary>
/// Откат правок сетки к тому состоянию, по которому идёт эфир. Возвращает шаблон к снимку,
/// сделанному при последнем применении, — правки слоёв, слотов и правил после него отменяются.
/// </summary>
public sealed record RestoreTemplateCommand(Guid ChannelId)
    : ICommand<Result<RestoreTemplateResultDto>>;

/// <param name="Slots">Сколько слотов в сетке после отката.</param>
/// <param name="DroppedRefs">
/// Ссылок, которые восстановить не удалось: группа или стык из снимка успели удалить. Такие слоты
/// возвращаются без них — иначе откат уронил бы вся операцию из-за одной удалённой группы.
/// </param>
public sealed record RestoreTemplateResultDto(int Slots, int DroppedRefs);
