Configure YesSql with custom content serializer

This commit is contained in:
Sipke Schoorstra 2020-10-18 12:27:40 +02:00
parent 945d8d9e56
commit ea48910a69
3 changed files with 19 additions and 3 deletions

View file

@ -31,9 +31,9 @@ namespace Elsa.Data.Extensions
IServiceProvider serviceProvider,
Action<IServiceProvider, Configuration> configure)
{
var configuration = new Configuration();
var configuration = new Configuration { ContentSerializer = new CustomJsonContentSerializer() };
configure(serviceProvider, configuration);
// TODO: The following line is a temporary workaround until the bug in YesSql is fixed: https://github.com/sebastienros/yessql/pull/280
var store = StoreFactory.CreateAndInitializeAsync(configuration).GetAwaiter().GetResult();
//var store = StoreFactory.Create(configuration);

View file

@ -0,0 +1,16 @@
using System;
using Newtonsoft.Json;
using NodaTime;
using NodaTime.Serialization.JsonNet;
using YesSql;
namespace Elsa.Data.Services
{
public class CustomJsonContentSerializer : IContentSerializer
{
private static readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
public object? Deserialize(string content, Type type) => JsonConvert.DeserializeObject(content, type, JsonSettings);
public dynamic? DeserializeDynamic(string content) => JsonConvert.DeserializeObject<dynamic>(content, JsonSettings);
public string Serialize(object item) => JsonConvert.SerializeObject(item, JsonSettings);
}
}

View file

@ -24,7 +24,7 @@ namespace Elsa.Samples.DistributedLock
{
services
.AddElsa(options => options
.UsePersistence(db => db.UseSqLite("Data Source=elsa2.db;Cache=Shared"))
.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared"))
.UseRedisLockProvider("localhost:6379,abortConnect=false"))
.AddConsoleActivities()
.AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))