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());
        }
Пример #2
0
 private IEventMap <NHibernateProjectionContext> BuildMap(
     IEventMapBuilder <TProjection, TKey, NHibernateProjectionContext> mapBuilder)
 {
     mapBuilder.HandleCustomActionsAs((_, projector) => projector());
     mapBuilder.HandleProjectionModificationsAs(HandleProjectionModification);
     mapBuilder.HandleProjectionDeletionsAs(HandleProjectionDeletion);
     return(mapBuilder.Build());
 }
Пример #3
0
 private static void SetupHandlers(IEventMapBuilder <ProjectionContext> eventMapBuilder)
 {
     eventMapBuilder.HandleCustomActionsAs((context, projector) => projector());
 }