private IEventMap <ProjectionContext> BuildMapFrom(IEventMapBuilder <TProjection, string, ProjectionContext> mapBuilder) { mapBuilder.HandleProjectionModificationsAs((key, context, projector, options) => { TProjection projection = store.GetRepository <TProjection>().Find(key); if (projection == null) { projection = new TProjection() { Id = key }; store.Add(projection); } return(projector(projection)); }); mapBuilder.HandleProjectionDeletionsAs((key, context, options) => { store.GetRepository <TProjection>().RemoveByKey(key); return(Task.FromResult(0)); }); mapBuilder.HandleCustomActionsAs((context, projector) => projector()); return(mapBuilder.Build()); }
private IEventMap <ProjectionContext> BuildMapFrom(IEventMapBuilder <TProjection, string, ProjectionContext> mapBuilder) { return(mapBuilder.Build(new ProjectorMap <TProjection, string, ProjectionContext> { Create = async(key, context, projector, shouldOverride) => { var projection = new TProjection() { Id = key }; await projector(projection); store.Add(projection); }, Update = async(key, context, projector, createIfMissing) => { TProjection projection = store.GetRepository <TProjection>().Find(key); await projector(projection); store.Add(projection); }, Delete = (key, context) => { store.GetRepository <TProjection>().RemoveByKey(key); return Task.FromResult(true); }, Custom = (context, projector) => projector() })); }
private IEventMap <NHibernateProjectionContext> BuildMap( IEventMapBuilder <TProjection, TKey, NHibernateProjectionContext> mapBuilder) { mapBuilder.HandleCustomActionsAs((_, projector) => projector()); mapBuilder.HandleProjectionModificationsAs(HandleProjectionModification); mapBuilder.HandleProjectionDeletionsAs(HandleProjectionDeletion); return(mapBuilder.Build()); }
private static IEventMap <ProjectionContext> BuildMap(IEventMapBuilder <ProjectionContext> eventMapBuilder) { if (eventMapBuilder == null) { throw new ArgumentNullException(nameof(eventMapBuilder)); } SetupHandlers(eventMapBuilder); return(eventMapBuilder.Build()); }
private IEventMap <EntityFrameworkProjectionContext> BuildEventMap( IEventMapBuilder <TProjection, TKey, EntityFrameworkProjectionContext> mapBuilder) { return(mapBuilder.Build(new ProjectorMap <TProjection, TKey, EntityFrameworkProjectionContext> { Create = OnCreate, Update = OnUpdate, Delete = OnDelete, Custom = (context, projector) => projector() })); }
private static IEventMap <ProjectionContext> BuildMap(IEventMapBuilder <ProjectionContext> eventMapBuilder) { if (eventMapBuilder == null) { throw new ArgumentNullException(nameof(eventMapBuilder)); } return(eventMapBuilder.Build(new ProjectorMap <ProjectionContext> { Custom = (context, projector) => projector() })); }
public Projector(IEventMapBuilder <ProjectionContext> eventMapBuilder, IEnumerable <Projector> children = null) { if (eventMapBuilder == null) { throw new ArgumentNullException(nameof(eventMapBuilder)); } SetupHandlers(eventMapBuilder); map = eventMapBuilder.Build(); this.children = children?.ToList() ?? new List <Projector>(); if (this.children.Contains(null)) { throw new ArgumentException("There is null child projector.", nameof(children)); } }