using Microsoft.Extensions.Configuration; namespace Common.Configuration.QueueCleaner; public sealed record QueueCleanerConfig : IJobConfig { public const string SectionName = "QueueCleaner"; public required bool Enabled { get; init; } public required bool RunSequentially { get; init; } [ConfigurationKeyName("IMPORT_FAILED_MAX_STRIKES")] public ushort ImportFailedMaxStrikes { get; init; } [ConfigurationKeyName("IMPORT_FAILED_IGNORE_PRIVATE")] public bool ImportFailedIgnorePrivate { get; init; } [ConfigurationKeyName("IMPORT_FAILED_DELETE_PRIVATE")] public bool ImportFailedDeletePrivate { get; init; } [ConfigurationKeyName("IMPORT_FAILED_IGNORE_PATTERNS")] public List? ImportFailedIgnorePatterns { get; init; } [ConfigurationKeyName("STALLED_MAX_STRIKES")] public ushort StalledMaxStrikes { get; init; } [ConfigurationKeyName("STALLED_RESET_STRIKES_ON_PROGRESS")] public bool StalledResetStrikesOnProgress { get; init; } [ConfigurationKeyName("STALLED_IGNORE_PRIVATE")] public bool StalledIgnorePrivate { get; init; } [ConfigurationKeyName("STALLED_DELETE_PRIVATE")] public bool StalledDeletePrivate { get; init; } public void Validate() { } }