using Common.Configuration; using Common.Configuration.Arr; using Common.Configuration.ContentBlocker; using Common.Configuration.DownloadCleaner; using Common.Configuration.DownloadClient; using Common.Configuration.IgnoredDownloads; using Common.Configuration.QueueCleaner; using Infrastructure.Configuration; using Microsoft.Extensions.Logging; namespace Infrastructure.Services; public interface IConfigurationService { Task UpdateConfigurationAsync(string sectionName, T configSection); Task GetConfigurationAsync(string sectionName); Task GetSonarrConfigAsync(); Task GetRadarrConfigAsync(); Task GetLidarrConfigAsync(); Task GetContentBlockerConfigAsync(); Task GetQueueCleanerConfigAsync(); Task GetDownloadCleanerConfigAsync(); Task GetDownloadClientConfigAsync(); Task GetIgnoredDownloadsConfigAsync(); Task UpdateSonarrConfigAsync(SonarrConfig config); Task UpdateRadarrConfigAsync(RadarrConfig config); Task UpdateLidarrConfigAsync(LidarrConfig config); Task UpdateContentBlockerConfigAsync(ContentBlockerConfig config); Task UpdateQueueCleanerConfigAsync(QueueCleanerConfig config); Task UpdateDownloadCleanerConfigAsync(DownloadCleanerConfig config); Task UpdateDownloadClientConfigAsync(DownloadClientConfig config); Task UpdateIgnoredDownloadsConfigAsync(IgnoredDownloadsConfig config); } public class ConfigurationService : IConfigurationService { private readonly ILogger _logger; private readonly IConfigManager _configManager; public ConfigurationService( ILogger logger, IConfigManager configManager) { _logger = logger; _configManager = configManager; } public async Task UpdateConfigurationAsync(string sectionName, T configSection) { try { // This is just a placeholder method for backward compatibility // The actual implementation depends on the specific config type _logger.LogWarning("Using deprecated UpdateConfigurationAsync method with section name '{section}'.", sectionName); return false; } catch (Exception ex) { _logger.LogError(ex, "Error updating configuration section {section}", sectionName); return false; } } public async Task GetConfigurationAsync(string sectionName) { try { // This is just a placeholder method for backward compatibility // The actual implementation depends on the specific config type _logger.LogWarning("Using deprecated GetConfigurationAsync method with section name '{section}'.", sectionName); return default; } catch (Exception ex) { _logger.LogError(ex, "Error retrieving configuration section {section}", sectionName); return default; } } // Specific configuration getters public async Task GetSonarrConfigAsync() => await _configManager.GetSonarrConfigAsync(); public async Task GetRadarrConfigAsync() => await _configManager.GetRadarrConfigAsync(); public async Task GetLidarrConfigAsync() => await _configManager.GetLidarrConfigAsync(); public async Task GetContentBlockerConfigAsync() => await _configManager.GetContentBlockerConfigAsync(); public async Task GetQueueCleanerConfigAsync() => await _configManager.GetQueueCleanerConfigAsync(); public async Task GetDownloadCleanerConfigAsync() => await _configManager.GetDownloadCleanerConfigAsync(); public async Task GetDownloadClientConfigAsync() => await _configManager.GetDownloadClientConfigAsync(); public async Task GetIgnoredDownloadsConfigAsync() => await _configManager.GetIgnoredDownloadsConfigAsync(); // Specific configuration setters public async Task UpdateSonarrConfigAsync(SonarrConfig config) => await _configManager.SaveSonarrConfigAsync(config); public async Task UpdateRadarrConfigAsync(RadarrConfig config) => await _configManager.SaveRadarrConfigAsync(config); public async Task UpdateLidarrConfigAsync(LidarrConfig config) => await _configManager.SaveLidarrConfigAsync(config); public async Task UpdateContentBlockerConfigAsync(ContentBlockerConfig config) => await _configManager.SaveContentBlockerConfigAsync(config); public async Task UpdateQueueCleanerConfigAsync(QueueCleanerConfig config) => await _configManager.SaveQueueCleanerConfigAsync(config); public async Task UpdateDownloadCleanerConfigAsync(DownloadCleanerConfig config) => await _configManager.SaveDownloadCleanerConfigAsync(config); public async Task UpdateDownloadClientConfigAsync(DownloadClientConfig config) => await _configManager.SaveDownloadClientConfigAsync(config); public async Task UpdateIgnoredDownloadsConfigAsync(IgnoredDownloadsConfig config) => await _configManager.SaveIgnoredDownloadsConfigAsync(config); }