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 <NHibernateProjectionContext> BuildMap( IEventMapBuilder <TProjection, TKey, NHibernateProjectionContext> mapBuilder) { mapBuilder.HandleCustomActionsAs((_, projector) => projector()); mapBuilder.HandleProjectionModificationsAs(HandleProjectionModification); mapBuilder.HandleProjectionDeletionsAs(HandleProjectionDeletion); return(mapBuilder.Build()); }
private static void SetupHandlers(IEventMapBuilder <ProjectionContext> eventMapBuilder) { eventMapBuilder.HandleCustomActionsAs((context, projector) => projector()); }