using LiteCqrs;

namespace TeleWave.Application.Library.Collections.Suggest;

/// <summary>Какие франшизы имеет смысл собрать из уже загруженных полнометражек.</summary>
public sealed record SuggestCollectionsQuery : IQuery<IReadOnlyList<CollectionSuggestionDto>>;

/// <param name="Key">Ключ предложения — с ним же приходит команда создания или дополнения.</param>
/// <param name="Source">Откуда взялось: франшиза источника либо догадка по названиям.</param>
/// <param name="Parts">Части в предлагаемом порядке; у дополнения — только те, которых не хватает.</param>
/// <param name="AlreadyExists">Коллекция с таким названием уже есть — создавать нечего.</param>
/// <param name="CollectionId">
/// Задан — франшиза уже собрана, и предлагается дополнить её, а не заводить вторую такую же.
/// </param>
public sealed record CollectionSuggestionDto(
    string Key,
    CollectionSuggestionSource Source,
    string Name,
    IReadOnlyList<CollectionSuggestionPartDto> Parts,
    bool AlreadyExists,
    Guid? CollectionId = null
);

public sealed record CollectionSuggestionPartDto(Guid ShowId, string Name, int? Year);
