diff --git a/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs b/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs deleted file mode 100644 index 66d1be39..00000000 --- a/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace AIStudio.Settings.DataModel; - -public class MetadataJsonConverter : JsonConverter -{ - private static readonly Dictionary TYPE_MAP = new() - { - { "Text", typeof(TextMetadata) }, - { "Pdf", typeof(PdfMetadata) }, - { "Spreadsheet", typeof(SpreadsheetMetadata) }, - { "Presentation", typeof(PresentationMetadata) }, - { "Image", typeof(ImageMetadata) }, - { "Document", typeof(DocumentMetadata) } - }; - - public override Metadata? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - using var jsonDoc = JsonDocument.ParseValue(ref reader); - var root = jsonDoc.RootElement; - var rawText = root.GetRawText(); - - var propertyName = root.EnumerateObject() - .Select(p => p.Name) - .FirstOrDefault(name => TYPE_MAP.ContainsKey(name)); - - if (propertyName != null && TYPE_MAP.TryGetValue(propertyName, out var metadataType)) - { - return (Metadata?)JsonSerializer.Deserialize(rawText, metadataType, options); - } - - return null; - } - - public override void Write(Utf8JsonWriter writer, Metadata value, JsonSerializerOptions options) => JsonSerializer.Serialize(writer, value, value.GetType(), options); -} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/MetadataJsonConverter.cs b/app/MindWork AI Studio/Tools/MetadataJsonConverter.cs new file mode 100644 index 00000000..5c89798f --- /dev/null +++ b/app/MindWork AI Studio/Tools/MetadataJsonConverter.cs @@ -0,0 +1,32 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace AIStudio.Tools; + +public class MetadataJsonConverter : JsonConverter +{ + public override SseMetadata? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + using var jsonDoc = JsonDocument.ParseValue(ref reader); + var root = jsonDoc.RootElement; + var rawText = root.GetRawText(); + + var propertyName = root.EnumerateObject() + .Select(p => p.Name) + .FirstOrDefault(); + + return propertyName switch + { + "Text" => JsonSerializer.Deserialize(rawText, options), + "Pdf" => JsonSerializer.Deserialize(rawText, options), + "Spreadsheet" => JsonSerializer.Deserialize(rawText, options), + "Presentation" => JsonSerializer.Deserialize(rawText, options), + "Image" => JsonSerializer.Deserialize(rawText, options), + "Document" => JsonSerializer.Deserialize(rawText, options), + + _ => null + }; + } + + public override void Write(Utf8JsonWriter writer, SseMetadata value, JsonSerializerOptions options) => JsonSerializer.Serialize(writer, value, value.GetType(), options); +} \ No newline at end of file