using LiteCqrs;

namespace TeleWave.Application.Programming.Groups.Suggest;

/// <summary>Что имеет смысл завести группой при текущем составе библиотеки.</summary>
public sealed record SuggestGroupsQuery : IQuery<IReadOnlyList<GroupSuggestionDto>>;

/// <param name="Key">Ключ предложения — с ним же приходит команда создания.</param>
/// <param name="ShowCount">Сколько шоу попадёт в состав.</param>
/// <param name="UnitCount">Сколько единиц воспроизведения (серий/фильмов) они дают.</param>
/// <param name="TotalDurationSeconds">Объём готового эфира — по обработанным ассетам.</param>
/// <param name="AlreadyExists">
/// Такая группа уже есть (по имени либо по совпадающему правилу набора) — создавать повторно нечего.
/// </param>
public sealed record GroupSuggestionDto(
    string Key,
    GroupSuggestionKind Kind,
    string Name,
    int ShowCount,
    int UnitCount,
    double TotalDurationSeconds,
    bool AlreadyExists
);
