From eeec505182f879fde8d9e28cde18a7717fcd204f Mon Sep 17 00:00:00 2001 From: Yukine Date: Wed, 16 Jun 2021 03:13:37 +0200 Subject: [PATCH] Fixed: Remove Camel Case DB Converter for Cookies (#223) * fix(ProviderRepository): remove DictionaryKeyPolicy CamelCase Naming * Revert "fix(ProviderRepository): remove DictionaryKeyPolicy CamelCase Naming" This reverts commit 90c95b240f5f51c7280aa5f314a52f72d5b92d89. * fix(TableMapping): make own non Camel Case Converter for Cookies --- .../Datastore/Converters/CookieConverter.cs | 36 +++++++++++++++++++ src/NzbDrone.Core/Datastore/TableMapping.cs | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/NzbDrone.Core/Datastore/Converters/CookieConverter.cs diff --git a/src/NzbDrone.Core/Datastore/Converters/CookieConverter.cs b/src/NzbDrone.Core/Datastore/Converters/CookieConverter.cs new file mode 100644 index 000000000..f62038f12 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Converters/CookieConverter.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Data; +using System.Text.Json; +using Dapper; +using NzbDrone.Common.Serializer; + +namespace NzbDrone.Core.Datastore.Converters +{ + public class CookieConverter : SqlMapper.TypeHandler> + { + protected readonly JsonSerializerOptions SerializerSettings; + + public CookieConverter() + { + var serializerSettings = new JsonSerializerOptions + { + AllowTrailingCommas = true, + IgnoreNullValues = true, + PropertyNameCaseInsensitive = true, + WriteIndented = true + }; + + SerializerSettings = serializerSettings; + } + + public override void SetValue(IDbDataParameter parameter, IDictionary value) + { + parameter.Value = JsonSerializer.Serialize(value, SerializerSettings); + } + + public override IDictionary Parse(object value) + { + return JsonSerializer.Deserialize>((string)value, SerializerSettings); + } + } +} diff --git a/src/NzbDrone.Core/Datastore/TableMapping.cs b/src/NzbDrone.Core/Datastore/TableMapping.cs index df79f29a1..a4e9ebe18 100644 --- a/src/NzbDrone.Core/Datastore/TableMapping.cs +++ b/src/NzbDrone.Core/Datastore/TableMapping.cs @@ -100,7 +100,7 @@ namespace NzbDrone.Core.Datastore SqlMapper.RemoveTypeMap(typeof(DateTime)); SqlMapper.AddTypeHandler(new DapperUtcConverter()); SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>()); - SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>()); + SqlMapper.AddTypeHandler(new CookieConverter()); SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>()); SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>>()); SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter>());