This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / workers / firehose-worker.ts
2.7 kB 64 lines
1// IMPORTANT: Import instrument.ts first to initialize Sentry as early as possible 2import '../instrument'; 3 4import { EnvironmentConfigService } from '../shared/infrastructure/config/EnvironmentConfigService'; 5import { RepositoryFactory } from '../shared/infrastructure/http/factories/RepositoryFactory'; 6import { ServiceFactory } from '../shared/infrastructure/http/factories/ServiceFactory'; 7import { UseCaseFactory } from '../shared/infrastructure/http/factories/UseCaseFactory'; 8import { FirehoseWorkerProcess } from '../modules/atproto/infrastructure/processes/FirehoseWorkerProcess'; 9import { FirehoseEventHandler } from '../modules/atproto/application/handlers/FirehoseEventHandler'; 10import { ProcessFirehoseEventUseCase } from '../modules/atproto/application/useCases/ProcessFirehoseEventUseCase'; 11import { DrizzleFirehoseEventDuplicationService } from '../modules/atproto/infrastructure/services/DrizzleFirehoseEventDuplicationService'; 12import { DatabaseFactory } from '../shared/infrastructure/database/DatabaseFactory'; 13 14async function main() { 15 console.log('[FIREHOSE] Starting firehose worker...'); 16 17 const configService = new EnvironmentConfigService(); 18 const repositories = RepositoryFactory.create(configService); 19 const services = ServiceFactory.createForWorker(configService, repositories); 20 const useCases = UseCaseFactory.createForWorker(repositories, services); 21 22 // Get database connection for duplication service 23 const db = DatabaseFactory.createConnection( 24 configService.getDatabaseConfig(), 25 ); 26 27 // Create firehose-specific services 28 const duplicationService = new DrizzleFirehoseEventDuplicationService( 29 db, 30 repositories.atUriResolutionService, 31 configService, 32 ); 33 34 // Create main processing use case using the factory-created use cases 35 const processFirehoseEventUseCase = new ProcessFirehoseEventUseCase( 36 duplicationService, 37 configService, 38 useCases.processCardFirehoseEventUseCase, 39 useCases.processCollectionFirehoseEventUseCase, 40 useCases.processCollectionLinkFirehoseEventUseCase, 41 useCases.processMarginBookmarkFirehoseEventUseCase, 42 useCases.processMarginCollectionFirehoseEventUseCase, 43 useCases.processMarginCollectionItemFirehoseEventUseCase, 44 useCases.processCollectionLinkRemovalFirehoseEventUseCase, 45 useCases.processFollowFirehoseEventUseCase, 46 useCases.processConnectionFirehoseEventUseCase, 47 ); 48 49 const firehoseEventHandler = new FirehoseEventHandler( 50 processFirehoseEventUseCase, 51 ); 52 53 const firehoseWorker = new FirehoseWorkerProcess( 54 configService, 55 firehoseEventHandler, 56 ); 57 58 await firehoseWorker.start(); 59} 60 61main().catch((error) => { 62 console.error('Failed to start firehose worker:', error); 63 process.exit(1); 64});