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(); }
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); }
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); }
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)); }
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); }); }
public virtual async Task Handle(IAction action, CancellationToken cancellationToken) { await Handle(action.As <TAction>(), cancellationToken); }