using Common.Configuration.Arr; using Common.Configuration.ContentBlocker; using Common.Configuration.DownloadCleaner; using Common.Configuration.DownloadClient; using Common.Configuration.General; using Common.Configuration.IgnoredDownloads; using Common.Configuration.Notification; using Common.Configuration.QueueCleaner; namespace Infrastructure.Configuration; /// /// Provides configuration management for various components with thread-safe file access. /// public interface IConfigManager { Task EnsureFilesExist(); Task GetConfigurationAsync() where T : class, new(); Task SaveConfigurationAsync(T config) where T : class; T GetConfiguration() where T : class, new(); bool SaveConfiguration(T config) where T : class; // Configuration files - Async methods // Task GetConfigurationAsync(string configFileName) where T : class, new(); // Task SaveConfigurationAsync(string configFileName, T config) where T : class; // Task UpdateConfigurationPropertyAsync(string configFileName, string propertyPath, T value); // Task MergeConfigurationAsync(string configFileName, T newValues) where T : class; // Task DeleteConfigurationAsync(string configFileName); // IEnumerable ListConfigurationFiles(); // Configuration files - Sync methods // T? GetConfiguration(string configFileName) where T : class, new(); // bool SaveConfiguration(string configFileName, T config) where T : class; // bool UpdateConfigurationProperty(string configFileName, string propertyPath, T value); // bool MergeConfiguration(string configFileName, T newValues) where T : class; // bool DeleteConfiguration(string configFileName); // Specific configuration types - Async methods // Task GetGeneralConfigAsync(); // Task GetSonarrConfigAsync(); // Task GetRadarrConfigAsync(); // Task GetLidarrConfigAsync(); // Task GetContentBlockerConfigAsync(); // Task GetQueueCleanerConfigAsync(); // Task GetDownloadCleanerConfigAsync(); // Task GetDownloadClientConfigAsync(); // Task GetIgnoredDownloadsConfigAsync(); // Task GetNotificationsConfigAsync(); // // Task SaveGeneralConfigAsync(GeneralConfig config); // Task SaveSonarrConfigAsync(SonarrConfig config); // Task SaveRadarrConfigAsync(RadarrConfig config); // Task SaveLidarrConfigAsync(LidarrConfig config); // Task SaveContentBlockerConfigAsync(ContentBlockerConfig config); // Task SaveQueueCleanerConfigAsync(QueueCleanerConfig config); // Task SaveDownloadCleanerConfigAsync(DownloadCleanerConfig config); // Task SaveDownloadClientConfigAsync(DownloadClientConfig config); // Task SaveIgnoredDownloadsConfigAsync(IgnoredDownloadsConfig config); // Task SaveNotificationsConfigAsync(NotificationsConfig config); // // // Specific configuration types - Sync methods // GeneralConfig GetGeneralConfig(); // SonarrConfig GetSonarrConfig(); // RadarrConfig GetRadarrConfig(); // LidarrConfig GetLidarrConfig(); // ContentBlockerConfig GetContentBlockerConfig(); // QueueCleanerConfig GetQueueCleanerConfig(); // DownloadCleanerConfig GetDownloadCleanerConfig(); // DownloadClientConfig GetDownloadClientConfig(); // IgnoredDownloadsConfig GetIgnoredDownloadsConfig(); // NotificationsConfig GetNotificationsConfig(); // // bool SaveGeneralConfig(GeneralConfig config); // bool SaveSonarrConfig(SonarrConfig config); // bool SaveRadarrConfig(RadarrConfig config); // bool SaveLidarrConfig(LidarrConfig config); // bool SaveContentBlockerConfig(ContentBlockerConfig config); // bool SaveQueueCleanerConfig(QueueCleanerConfig config); // bool SaveDownloadCleanerConfig(DownloadCleanerConfig config); // bool SaveDownloadClientConfig(DownloadClientConfig config); // bool SaveIgnoredDownloadsConfig(IgnoredDownloadsConfig config); // bool SaveNotificationsConfig(NotificationsConfig config); }