diff options
author | Emma@Rory& <root@rory.gay> | 2023-07-24 20:57:23 +0200 |
---|---|---|
committer | Emma@Rory& <root@rory.gay> | 2023-07-24 20:57:23 +0200 |
commit | cf6f87bea88df3f90e33dfdc5bb16f47b8716054 (patch) | |
tree | 92605891ae683d91f1d71a725d1c94f6675be43b /MatrixRoomUtils.Desktop/FileStorageProvider.cs | |
parent | Debug validation api (diff) | |
download | MatrixUtils-cf6f87bea88df3f90e33dfdc5bb16f47b8716054.tar.xz |
Start of MRU Desktop
Diffstat (limited to 'MatrixRoomUtils.Desktop/FileStorageProvider.cs')
-rw-r--r-- | MatrixRoomUtils.Desktop/FileStorageProvider.cs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/MatrixRoomUtils.Desktop/FileStorageProvider.cs b/MatrixRoomUtils.Desktop/FileStorageProvider.cs new file mode 100644 index 0000000..36025eb --- /dev/null +++ b/MatrixRoomUtils.Desktop/FileStorageProvider.cs @@ -0,0 +1,35 @@ +using System.Text.Json; +using MatrixRoomUtils.Core.Extensions; +using MatrixRoomUtils.Core.Interfaces.Services; +using Microsoft.Extensions.Logging; + +namespace MatrixRoomUtils.Desktop; + +public class FileStorageProvider : IStorageProvider { + private readonly ILogger<FileStorageProvider> _logger; + + public string TargetPath { get; } + + /// <summary> + /// Creates a new instance of <see cref="FileStorageProvider" />. + /// </summary> + /// <param name="targetPath"></param> + public FileStorageProvider(string targetPath) { + new Logger<FileStorageProvider>(new LoggerFactory()).LogInformation("test"); + Console.WriteLine($"Initialised FileStorageProvider with path {targetPath}"); + TargetPath = targetPath; + if(!Directory.Exists(targetPath)) { + Directory.CreateDirectory(targetPath); + } + } + + public async Task SaveObjectAsync<T>(string key, T value) => await File.WriteAllTextAsync(Path.Join(TargetPath, key), ObjectExtensions.ToJson(value)); + + public async Task<T?> LoadObjectAsync<T>(string key) => JsonSerializer.Deserialize<T>(await File.ReadAllTextAsync(Path.Join(TargetPath, key))); + + public async Task<bool> ObjectExistsAsync(string key) => File.Exists(Path.Join(TargetPath, key)); + + public async Task<List<string>> GetAllKeysAsync() => Directory.GetFiles(TargetPath).Select(Path.GetFileName).ToList(); + + public async Task DeleteObjectAsync(string key) => File.Delete(Path.Join(TargetPath, key)); +} \ No newline at end of file |