You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
using Dapper;
|
|
|
|
namespace NzbDrone.Core.Datastore.Converters
|
|
{
|
|
public class CookieConverter : SqlMapper.TypeHandler<IDictionary<string, string>>
|
|
{
|
|
protected readonly JsonSerializerOptions SerializerSettings;
|
|
|
|
public CookieConverter()
|
|
{
|
|
var serializerSettings = new JsonSerializerOptions
|
|
{
|
|
AllowTrailingCommas = true,
|
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
|
PropertyNameCaseInsensitive = true,
|
|
WriteIndented = false
|
|
};
|
|
|
|
SerializerSettings = serializerSettings;
|
|
}
|
|
|
|
public override void SetValue(IDbDataParameter parameter, IDictionary<string, string> value)
|
|
{
|
|
parameter.Value = JsonSerializer.Serialize(value, SerializerSettings);
|
|
}
|
|
|
|
public override IDictionary<string, string> Parse(object value)
|
|
{
|
|
return JsonSerializer.Deserialize<Dictionary<string, string>>((string)value, SerializerSettings);
|
|
}
|
|
}
|
|
}
|