using Common.Configuration.QueueCleaner; namespace Common.Configuration.DTOs.QueueCleaner; /// /// DTO for retrieving QueueCleaner configuration /// public class QueueCleanerConfigDto { /// /// Whether the queue cleaner is enabled /// public bool Enabled { get; set; } /// /// Cron expression for scheduling /// public string CronExpression { get; set; } = "0 0/5 * * * ?"; /// /// Whether to run jobs sequentially /// public bool RunSequentially { get; set; } /// /// Path to ignored downloads file /// public string IgnoredDownloadsPath { get; set; } = string.Empty; /// /// Maximum number of strikes for failed imports /// public ushort FailedImportMaxStrikes { get; set; } /// /// Whether to ignore private torrents for failed imports /// public bool FailedImportIgnorePrivate { get; set; } /// /// Whether to delete private torrents for failed imports /// public bool FailedImportDeletePrivate { get; set; } /// /// Patterns to ignore for failed imports /// public IReadOnlyList FailedImportIgnorePatterns { get; set; } = Array.Empty(); /// /// Maximum number of strikes for stalled downloads /// public ushort StalledMaxStrikes { get; set; } /// /// Whether to reset strikes on progress for stalled downloads /// public bool StalledResetStrikesOnProgress { get; set; } /// /// Whether to ignore private torrents for stalled downloads /// public bool StalledIgnorePrivate { get; set; } /// /// Whether to delete private torrents for stalled downloads /// public bool StalledDeletePrivate { get; set; } /// /// Maximum number of strikes for downloading metadata /// public ushort DownloadingMetadataMaxStrikes { get; set; } /// /// Maximum number of strikes for slow downloads /// public ushort SlowMaxStrikes { get; set; } /// /// Whether to reset strikes on progress for slow downloads /// public bool SlowResetStrikesOnProgress { get; set; } /// /// Whether to ignore private torrents for slow downloads /// public bool SlowIgnorePrivate { get; set; } /// /// Whether to delete private torrents for slow downloads /// public bool SlowDeletePrivate { get; set; } /// /// Minimum speed threshold for slow downloads /// public string SlowMinSpeed { get; set; } = string.Empty; /// /// Maximum time allowed for slow downloads /// public double SlowMaxTime { get; set; } /// /// Size threshold above which slow downloads are ignored /// public string SlowIgnoreAboveSize { get; set; } = string.Empty; }