using LiteCqrs;
namespace TeleWave.Application.Diagnostics;
/// Живое состояние инфраструктуры для админской панели диагностики: БД, хранилище, ffmpeg.
public sealed record GetSystemDiagnosticsQuery : IQuery;
public sealed record SystemDiagnosticsDto(
DatabaseDiagnosticsDto Database,
StorageDiagnosticsDto Storage,
ToolDiagnosticsDto Ffmpeg,
ToolDiagnosticsDto Ffprobe
);
/// Доступность БД и время лёгкого запроса; при ошибке — её текст без latency.
public sealed record DatabaseDiagnosticsDto(bool Reachable, long? LatencyMs, string? Error);
/// LowSpace — свободного меньше порога MinFreeBytes (место известно и оно мало).
public sealed record StorageDiagnosticsDto(
string RootPath,
bool Exists,
bool Writable,
long TotalBytes,
long FreeBytes,
long MinFreeBytes,
bool LowSpace
);
public sealed record ToolDiagnosticsDto(bool Available, string? Version);