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>());