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

namespace TeleWave.Application.Metadata.FindMissingSeasons;

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

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