Files
Cleanuparr/code/Infrastructure/Configuration/IConfigurationProvider.cs
Flaminel 7a1e019c76 fix #24
2025-05-19 19:40:39 +03:00

71 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
namespace Infrastructure.Configuration;
/// <summary>
/// Interface for configuration providers
/// </summary>
public interface IConfigurationProvider
{
/// <summary>
/// Checks if a configuration file exists.
/// </summary>
bool FileExists(string fileName);
/// <summary>
/// Reads a configuration from storage asynchronously. Returns a default instance if the configuration doesn't exist.
/// </summary>
Task<T> ReadConfigurationAsync<T>(string fileName) where T : class, new();
/// <summary>
/// Reads a configuration from storage synchronously. Returns a default instance if the configuration doesn't exist.
/// </summary>
T ReadConfiguration<T>(string fileName) where T : class, new();
/// <summary>
/// Writes a configuration to storage asynchronously
/// </summary>
Task<bool> WriteConfigurationAsync<T>(string fileName, T configuration) where T : class;
/// <summary>
/// Writes a configuration to storage synchronously
/// </summary>
bool WriteConfiguration<T>(string fileName, T configuration) where T : class;
/// <summary>
/// Updates a specific property in a configuration asynchronously
/// </summary>
Task<bool> UpdateConfigurationPropertyAsync<T>(string fileName, string propertyPath, T value);
/// <summary>
/// Updates a specific property in a configuration synchronously
/// </summary>
bool UpdateConfigurationProperty<T>(string fileName, string propertyPath, T value);
/// <summary>
/// Merges configuration values asynchronously
/// </summary>
Task<bool> MergeConfigurationAsync<T>(string fileName, T newValues) where T : class;
/// <summary>
/// Merges configuration values synchronously
/// </summary>
bool MergeConfiguration<T>(string fileName, T newValues) where T : class;
/// <summary>
/// Deletes a configuration asynchronously
/// </summary>
Task<bool> DeleteConfigurationAsync(string fileName);
/// <summary>
/// Deletes a configuration synchronously
/// </summary>
bool DeleteConfiguration(string fileName);
/// <summary>
/// Lists all available configuration files
/// </summary>
IEnumerable<string> ListConfigurationFiles();
}