using LiteCqrs;

namespace TeleWave.Application.Media.ManualInbox;

/// <summary>
/// Что лежит в <c>manual/</c>. От обычного <c>inbox/</c> отличается только тем, кто разбирает:
/// там сканер по таймеру, здесь человек из UI — и сразу указывает шоу. Файл в обоих случаях
/// уходит из каталога.
/// </summary>
public sealed record ListManualInboxQuery : IQuery<ManualInboxListDto>;

public sealed record ManualInboxFileDto(
    /// <summary>Путь относительно manual/ — он же идентификатор файла в команде импорта.</summary>
    string RelativePath,
    /// <summary>Каталог внутри manual/ («» — корень): по нему список группируется в UI.</summary>
    string Folder,
    string Name,
    long SizeBytes,
    /// <summary>Файл с таким именем уже есть в библиотеке — импорт отклонит его как дубликат.</summary>
    bool AlreadyImported
);

/// <summary>
/// <paramref name="Truncated"/> честно говорит, что выдача обрезана лимитом: показать часть каталога
/// молча значило бы «файла нет» там, где он есть.
/// </summary>
public sealed record ManualInboxListDto(IReadOnlyList<ManualInboxFileDto> Files, bool Truncated);
