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;
}