public EfCoreRillStore( DbContextOptions <RillDbContext> options, IEventContentSerializer?eventSerializer = default, IEventContentTypeResolver?typeResolver = default) { //https://docs.microsoft.com/en-us/ef/core/dbcontext-configuration/#simple-dbcontext-initialization-with-new _options = options; _eventContentSerializer = eventSerializer ?? new JsonEventContentSerializer(); _eventContentTypeResolver = typeResolver ?? new DefaultEventContentTypeResolver(); }
internal Event ToEvent(IEventContentTypeResolver eventContentTypeResolver, IEventContentSerializer contentSerializer) { var ct = new EventContentType(TypeAssemblyName, TypeNamespace, TypeName); var t = eventContentTypeResolver.Resolve(ct); return(Event.From( EventId.From(Id), Rill.Sequence.From(Sequence), Rill.Timestamp.From(Timestamp.UtcDateTime), contentSerializer.Deserialize(Content, t))); }
internal static RillEventEntity From(RillCommit commit, Event e, IEventContentSerializer contentSerializer) { var ct = EventContentType.From(e.Content.GetType()); return(new RillEventEntity( (Guid)e.Id, (Guid)commit.Id, ct.AssemblyName, ct.Namespace, ct.Name, (long)e.Sequence, (DateTime)e.Timestamp, contentSerializer.Serialize(e.Content))); }