From 637279d9b761df32968e3c5af87ae34b8ade69cd Mon Sep 17 00:00:00 2001 From: Rory& Date: Mon, 7 Apr 2025 17:34:48 +0200 Subject: Intermediary commit: rewrite optimising of sync store, support compiled JSON in IStorageProvider --- LibMatrix/Interfaces/Services/IStorageProvider.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'LibMatrix/Interfaces/Services') diff --git a/LibMatrix/Interfaces/Services/IStorageProvider.cs b/LibMatrix/Interfaces/Services/IStorageProvider.cs index fb7bb6d..f7e5488 100644 --- a/LibMatrix/Interfaces/Services/IStorageProvider.cs +++ b/LibMatrix/Interfaces/Services/IStorageProvider.cs @@ -1,3 +1,7 @@ +using System.Text.Json; +using System.Text.Json.Serialization.Metadata; +using LibMatrix.Responses; + namespace LibMatrix.Interfaces.Services; public interface IStorageProvider { @@ -17,6 +21,13 @@ public interface IStorageProvider { Console.WriteLine($"StorageProvider<{GetType().Name}> does not implement SaveObject(key, value)!"); throw new NotImplementedException(); } + + public Task SaveObjectAsync(string key, T value, JsonTypeInfo jsonTypeInfo) { + Console.WriteLine($"StorageProvider<{GetType().Name}> does not implement SaveObjectAsync(key, value, typeInfo), using default implementation w/ MemoryStream!"); + var ms = new MemoryStream(); + JsonSerializer.Serialize(ms, value, jsonTypeInfo); + return SaveStreamAsync(key, ms); + } // load public Task LoadObjectAsync(string key) { @@ -24,6 +35,12 @@ public interface IStorageProvider { throw new NotImplementedException(); } + public async Task LoadObjectAsync(string key, JsonTypeInfo jsonTypeInfo) { + Console.WriteLine($"StorageProvider<{GetType().Name}> does not implement SaveObject(key, typeInfo), using default implementation!"); + await using var stream = await LoadStreamAsync(key); + return JsonSerializer.Deserialize(stream!, jsonTypeInfo); + } + // check if exists public Task ObjectExistsAsync(string key) { Console.WriteLine($"StorageProvider<{GetType().Name}> does not implement ObjectExists(key)!"); -- cgit 1.5.1