public static IProjectionDispatcher FilterFor( World world, IProjectionDispatcher projectionDispatcher, string[] becauseOf, FilterOutcome filterOutcome) { var projectionProtocols = world.ActorFor( new [] { typeof(IProjectionDispatcher), typeof(IProjection) }, typeof(FilterProjectionDispatcherActor), filterOutcome); var projectionFilter = Protocols.Two <IProjectionDispatcher, IProjection>(projectionProtocols); projectionDispatcher.ProjectTo(projectionFilter._2, becauseOf); return(projectionFilter._1); }
public void TestThatProjectionsPipeline() { var store = Store; var filterOutcome = new FilterOutcome(); var filterOutcomeAccess = filterOutcome.AfterCompleting(3); var filter1 = FilterProjectionDispatcherActor.FilterFor(World, ProjectionDispatcher, new[] { "op-1" }, filterOutcome); var filter2 = FilterProjectionDispatcherActor.FilterFor(World, filter1, new[] { "op-1" }, filterOutcome); FilterProjectionDispatcherActor.FilterFor(World, filter2, new[] { "op-1" }, filterOutcome); var entity1 = new Entity1("123-1", 1); store.Write(entity1.Id, entity1, 1, Metadata.With("value1", "op-1"), new MockResultInterest()); Assert.Equal(3, filterOutcomeAccess.ReadFrom <int>("filterCount")); }
public FilterProjectionDispatcherActor(FilterOutcome outcome) => _outcome = outcome;