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