Пример #1
0
                public DeleteAction(IAction <TEvent, TProjectionContext> actionBuilder,
                                    Func <ProjectorMap <TProjection, TProjectionId, TProjectionContext> > projector, Func <TEvent, TProjectionId> getKey)
                {
                    actionBuilder.As((anEvent, context) => OnDelete(projector(), getKey, anEvent, context));

                    ThrowingIfMissing();
                }
Пример #2
0
                public IUpdateAction <TEvent, TKey, TProjection, TContext> Using(Func <TProjection, TEvent, TContext, Task> updateAction)
                {
                    if (updateAction == null)
                    {
                        throw new ArgumentNullException(nameof(updateAction));
                    }

                    actionBuilder.As((anEvent, context) => OnUpdate(updateAction, anEvent, context));

                    return(this);
                }
Пример #3
0
                public ICreateAction <TEvent, TProjection, TProjectionContext> Using(Func <TProjection, TEvent, TProjectionContext, Task> projector)
                {
                    if (projector == null)
                    {
                        throw new ArgumentNullException(nameof(projector));
                    }

                    _actionBuilder.As((anEvent, context) => _projector().Create(
                                          _getKey(anEvent),
                                          context,
                                          projection => projector(projection, anEvent, context),
                                          existingProjection => _shouldOverwrite(existingProjection, anEvent, context)));

                    return(this);
                }
Пример #4
0
        public static void As <TEvent, TContext>(
            this IAction <TEvent, TContext> actionBuilder,
            Func <TEvent, Task> action)
        {
            if (actionBuilder == null)
            {
                throw new ArgumentNullException(nameof(actionBuilder));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            actionBuilder.As((anEvent, context) => action(anEvent));
        }
Пример #5
0
        public static void As <TEvent, TContext>(
            this IAction <TEvent, TContext> actionBuilder,
            Action <TEvent, TContext> action)
        {
            if (actionBuilder == null)
            {
                throw new ArgumentNullException(nameof(actionBuilder));
            }

            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            actionBuilder.As((anEvent, context) =>
            {
                action(anEvent, context);
                return(TaskConstants.ZeroTask);
            });
        }
Пример #6
0
 public virtual async Task Handle(IAction action, CancellationToken cancellationToken)
 {
     await Handle(action.As <TAction>(), cancellationToken);
 }