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

namespace TeleWave.Application.Metadata.FindMissingEpisodes;

/// <summary>Отчёт: каких серий не хватает в загруженных сезонах шоу (по данным привязанного источника).</summary>
public sealed record FindMissingEpisodesQuery(Guid ShowId) : IQuery<Result<MissingEpisodesReport>>;

public sealed record MissingEpisodesReport(IReadOnlyList<SeasonGapDto> Seasons);

/// <param name="Season">Номер сезона (есть хотя бы одна загруженная серия).</param>
/// <param name="Expected">Сколько серий в сезоне по источнику (null — источник не отдал данные).</param>
/// <param name="Loaded">Сколько серий этого сезона загружено.</param>
/// <param name="Missing">Отсутствующие номера серий (пусто — все на месте либо Expected неизвестен).</param>
public sealed record SeasonGapDto(
    int Season,
    int? Expected,
    int Loaded,
    IReadOnlyList<int> Missing
);
