private Configuration() { _bus = new MessageBus(); var eventStore = new SqlEventStore(_bus); var repository = new DomainRepository(eventStore); var commandService = new AccountApplicationService(repository); _bus.RegisterHandler<RegisterAccountCommand>(commandService.Handle); _bus.RegisterHandler<DebitAccountCommand>(commandService.Handle); _bus.RegisterHandler<UnlockAccountCommand>(commandService.Handle); var infoProjection = new AccountInfoProjection(); _bus.RegisterHandler<AccountRegisteredEvent>(infoProjection.Handle); _bus.RegisterHandler<AccountLockedEvent>(infoProjection.Handle); _bus.RegisterHandler<AccountUnlockedEvent>(infoProjection.Handle); var balanceProjection = new AccountBalanceProjection(); _bus.RegisterHandler<AccountRegisteredEvent>(balanceProjection.Handle); _bus.RegisterHandler<AccountDebitedEvent>(balanceProjection.Handle); var notification = new NotificationProjection(); _bus.RegisterHandler<AccountRegisteredEvent>(notification.Handle); _bus.RegisterHandler<AccountDebitedEvent>(notification.Handle); _bus.RegisterHandler<AccountLockedEvent>(notification.Handle); _bus.RegisterHandler<AccountUnlockedEvent>(notification.Handle); _bus.RegisterHandler<OverdrawAttemptedEvent>(notification.Handle); _readModel = new ReadModelFacade(balanceProjection, infoProjection, notification); var events = eventStore.GetAllEventsEver(); _bus.Publish(events); }
private Configuration() { _bus = new MessageBus(); var eventStore = new SqlEventStore(_bus); var repository = new DomainRepository(eventStore); var commandService = new AccountApplicationService(repository); _bus.RegisterHandler <RegisterAccountCommand>(commandService.Handle); _bus.RegisterHandler <DebitAccountCommand>(commandService.Handle); _bus.RegisterHandler <UnlockAccountCommand>(commandService.Handle); var infoProjection = new AccountInfoProjection(); _bus.RegisterHandler <AccountRegisteredEvent>(infoProjection.Handle); _bus.RegisterHandler <AccountLockedEvent>(infoProjection.Handle); _bus.RegisterHandler <AccountUnlockedEvent>(infoProjection.Handle); var balanceProjection = new AccountBalanceProjection(); _bus.RegisterHandler <AccountRegisteredEvent>(balanceProjection.Handle); _bus.RegisterHandler <AccountDebitedEvent>(balanceProjection.Handle); var notification = new NotificationProjection(); _bus.RegisterHandler <AccountRegisteredEvent>(notification.Handle); _bus.RegisterHandler <AccountDebitedEvent>(notification.Handle); _bus.RegisterHandler <AccountLockedEvent>(notification.Handle); _bus.RegisterHandler <AccountUnlockedEvent>(notification.Handle); _bus.RegisterHandler <OverdrawAttemptedEvent>(notification.Handle); _readModel = new ReadModelFacade(balanceProjection, infoProjection, notification); var events = eventStore.GetAllEventsEver(); _bus.Publish(events); }