using System.Text.Json; using MatrixRoomUtils.Core.Extensions; using MatrixRoomUtils.Core.Interfaces.Services; namespace MatrixRoomUtils.Bot; public class FileStorageProvider : IStorageProvider { public string TargetPath { get; } /// /// Creates a new instance of . /// /// public FileStorageProvider(string targetPath) { Console.WriteLine($"Initialised FileStorageProvider with path {targetPath}"); TargetPath = targetPath; if(!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } } public async Task SaveObject(string key, T value) => await File.WriteAllTextAsync(Path.Join(TargetPath, key), ObjectExtensions.ToJson(value)); public async Task LoadObject(string key) => JsonSerializer.Deserialize(await File.ReadAllTextAsync(Path.Join(TargetPath, key))); public async Task ObjectExists(string key) => File.Exists(Path.Join(TargetPath, key)); public async Task> GetAllKeys() => Directory.GetFiles(TargetPath).Select(Path.GetFileName).ToList(); public async Task DeleteObject(string key) => File.Delete(Path.Join(TargetPath, key)); }