diff --git a/src/shared/infrastructure/http/factories/UseCaseFactory.ts b/src/shared/infrastructure/http/factories/UseCaseFactory.ts index 7f4ab615..dad28d64 100644 --- a/src/shared/infrastructure/http/factories/UseCaseFactory.ts +++ b/src/shared/infrastructure/http/factories/UseCaseFactory.ts @@ -234,7 +234,7 @@ export class UseCaseFactory { static createForWorker( repositories: Repositories, services: SharedServices, - ): Pick { + ): Pick & { indexUrlForSearchUseCase: IndexUrlForSearchUseCase } { return { // Feed use cases (only ones needed by workers) addActivityToFeedUseCase: new AddActivityToFeedUseCase( diff --git a/src/shared/infrastructure/processes/InMemoryEventWorkerProcess.ts b/src/shared/infrastructure/processes/InMemoryEventWorkerProcess.ts index a58be88e..f5d63d57 100644 --- a/src/shared/infrastructure/processes/InMemoryEventWorkerProcess.ts +++ b/src/shared/infrastructure/processes/InMemoryEventWorkerProcess.ts @@ -1,63 +1,3 @@ -import { IProcess } from '../../domain/IProcess'; -import { EnvironmentConfigService } from '../config/EnvironmentConfigService'; -import { InMemoryEventSubscriber } from '../events/InMemoryEventSubscriber'; -import { CardAddedToLibraryEventHandler } from '../../../modules/feeds/application/eventHandlers/CardAddedToLibraryEventHandler'; -import { CardAddedToCollectionEventHandler } from '../../../modules/feeds/application/eventHandlers/CardAddedToCollectionEventHandler'; -import { CardCollectionSaga } from '../../../modules/feeds/application/sagas/CardCollectionSaga'; -import { InMemorySagaStateStore } from '../../../modules/feeds/infrastructure/InMemorySagaStateStore'; -import { EventNames } from '../events/EventConfig'; -import { RepositoryFactory } from '../http/factories/RepositoryFactory'; -import { ServiceFactory } from '../http/factories/ServiceFactory'; -import { UseCaseFactory } from '../http/factories/UseCaseFactory'; - -export class InMemoryEventWorkerProcess implements IProcess { - constructor(private configService: EnvironmentConfigService) {} - - async start(): Promise { - console.log('Starting in-memory event worker...'); - - // Create dependencies - const repositories = RepositoryFactory.create(this.configService); - const services = ServiceFactory.createForWebApp( - this.configService, - repositories, - ); - const useCases = UseCaseFactory.createForWorker(repositories, services); - - // Create in-memory saga state store - const stateStore = new InMemorySagaStateStore(); - const cardCollectionSaga = new CardCollectionSaga( - useCases.addActivityToFeedUseCase, - stateStore, - ); - - // Create event subscriber - const eventSubscriber = new InMemoryEventSubscriber(); - - // Create and register event handlers - const cardAddedToLibraryHandler = new CardAddedToLibraryEventHandler( - cardCollectionSaga, - ); - const cardAddedToCollectionHandler = new CardAddedToCollectionEventHandler( - cardCollectionSaga, - ); - - await eventSubscriber.subscribe( - EventNames.CARD_ADDED_TO_LIBRARY, - cardAddedToLibraryHandler, - ); - - await eventSubscriber.subscribe( - EventNames.CARD_ADDED_TO_COLLECTION, - cardAddedToCollectionHandler, - ); - - // Start the subscriber - await eventSubscriber.start(); - - console.log('In-memory event worker started'); - } -} import { EnvironmentConfigService } from '../config/EnvironmentConfigService'; import { ServiceFactory, @@ -83,7 +23,10 @@ export class InMemoryEventWorkerProcess implements IProcess { console.log('Starting in-memory event worker...'); const repositories = RepositoryFactory.create(this.configService); - const services = ServiceFactory.createForWorker(this.configService, repositories); + const services = ServiceFactory.createForWorker( + this.configService, + repositories, + ); const eventSubscriber = services.createEventSubscriber('feeds'); // Queue name doesn't matter for in-memory await this.registerHandlers(eventSubscriber, services, repositories); @@ -105,18 +48,18 @@ export class InMemoryEventWorkerProcess implements IProcess { services.sagaStateStore, ); - const feedCardAddedToLibraryHandler = new FeedCardAddedToLibraryEventHandler( - cardCollectionSaga, - ); + const feedCardAddedToLibraryHandler = + new FeedCardAddedToLibraryEventHandler(cardCollectionSaga); const cardAddedToCollectionHandler = new CardAddedToCollectionEventHandler( cardCollectionSaga, ); // Search handlers - const searchCardAddedToLibraryHandler = new SearchCardAddedToLibraryEventHandler( - useCases.indexUrlForSearchUseCase, - repositories.cardRepository, - ); + const searchCardAddedToLibraryHandler = + new SearchCardAddedToLibraryEventHandler( + useCases.indexUrlForSearchUseCase, + repositories.cardRepository, + ); // Register feed handlers await subscriber.subscribe(