public OrderHandler(IMapper mapper, OrderContext orderContext, EventProvider eventContext, ProjectionProvider projectionContext) { this.mapper = mapper; this.orderContext = orderContext; this.eventContext = eventContext; this.projectionContext = projectionContext; }
public void Customize(EndpointConfiguration endpointConfiguration) { var transport = endpointConfiguration.UseTransport <RabbitMQTransport>(); endpointConfiguration.UsePersistence <InMemoryPersistence>(); var conventions = endpointConfiguration.Conventions(); conventions.DefiningCommandsAs(type => type.Namespace != null && type.Namespace.Contains("Commands")); conventions.DefiningEventsAs(type => type.Namespace != null && type.Namespace.Contains("Events")); var mapper = new MappingConfig(); var projectionContext = new ProjectionProvider(); endpointConfiguration.RegisterComponents(reg => { reg.ConfigureComponent(() => new OrderContext("OrderContext"), DependencyLifecycle.InstancePerCall); reg.ConfigureComponent(() => mapper.Mapper, DependencyLifecycle.SingleInstance); reg.ConfigureComponent(() => new EventProvider(), DependencyLifecycle.SingleInstance); reg.ConfigureComponent(() => projectionContext, DependencyLifecycle.SingleInstance); reg.ConfigureComponent <ExecuteEventProcessor>(DependencyLifecycle.SingleInstance); }); var projectionProvider = new CustomProjectionProvider(projectionContext); projectionProvider.RunProjections().GetAwaiter().GetResult(); endpointConfiguration.UseSerialization <JsonSerializer>(); endpointConfiguration.SendFailedMessagesTo("error"); endpointConfiguration.AuditProcessedMessagesTo("audit"); }
public CustomProjectionProvider(ProjectionProvider projectionContext) { this.projectionContext = projectionContext; ProjectionList = new ProjectionList(); AddCustomProjections(); }
public async Task GetAllStreamsProjectionTest() { var projectionContext = new ProjectionProvider(); var data = await projectionContext.GetListOfOrderStreamsAsync(); Assert.IsNotNull(data); }
public RestoreCommandHandler(OrderHandler orderHandler, ExecuteEventProcessor executeEventProcessor, ProjectionProvider projectionContext, EventProvider eventContext, CustomerHandler customerHandler) { this.orderHandler = orderHandler; this.executeEventProcessor = executeEventProcessor; this.projectionContext = projectionContext; this.eventContext = eventContext; this.customerHandler = customerHandler; }
public async Task GetByQueryTest() { var projectionName = "Order c0c8b62c-607e-4298-824c-1a73f7361f75"; var projectionManager = new ProjectionProvider(); var state = await projectionManager.GetStateAsync(projectionName); Assert.IsNotNull(state); }
private static void Main() { Console.Title = "Server"; var instance = ServerInstance.Initialize().GetAwaiter().GetResult(); Console.WriteLine("Start workinkg server . . . "); Console.WriteLine("Waiting messages . . . "); var projectionContext = new ProjectionProvider(); var customerProducer = new CustomerProducer(projectionContext, instance); while (true) { var line = Console.ReadLine(); if (line == null) { continue; } if (line == "exit") { break; } if (line.Contains("check-out")) { var commandItems = line.Split(' '); var orderId = Guid.Parse(commandItems[1]); instance.Send(new CheckOutOrderCommand { OrderId = orderId }).GetAwaiter().GetResult(); } else if (line == "order-processor-restore") { instance.Send(new RestoreOrderProcessorCommand()).GetAwaiter().GetResult(); } else if (line == "propagate-customers") { customerProducer.PropagateCustomersFromStoreAsync().GetAwaiter().GetResult(); } } instance.Stop().GetAwaiter().GetResult(); }
public OrderHandlerTests() { eventContext = new EventProvider(); var mockOrderContext = new MockedDbContext <OrderContext>(); projectionContext = new ProjectionProvider(); mockOrderContext.MockTables(); orderContext = mockOrderContext.Object; var mappingConfig = new MappingConfig(); orderHandler = new OrderHandler(mappingConfig.Mapper, mockOrderContext.Object, eventContext, projectionContext); mappingTestConfig = new MappingTestConfig(); }
public async Task CreateProjectionTest() { var projectionManager = new ProjectionProvider(); var name = "Order c0c8b62c-607e-4298-824c-1a73f7361f75"; var projectionQuery = @"fromStream('Order c0c8b62c-607e-4298-824c-1a73f7361f75') .when({ $init:function(){ return { events: [] }; }, $any: function(state, event){ var metadata = JSON.parse(event.metadataRaw); var timeStamp = metadata.TimeStamp; if(Date.parse(timeStamp) >= Date.parse('2017-12-15 18:20:36')){ var data = { eventType : event.eventType, eventData : event, timeStamp : timeStamp }; state.events.push(data); } } });"; await projectionManager.CreateContinuousAsync(name, projectionQuery); await projectionManager.EnableAsync(name); var query = projectionManager.GetQueryAsync(name); Assert.IsNotNull(query); Assert.AreEqual(query, projectionQuery); }
public CustomerProducer(ProjectionProvider projectionContext, IMessageSession messageSession) { this.projectionContext = projectionContext; this.messageSession = messageSession; }