This repository has no description
0

Configure Feed

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

feat: add cardLibraryService and cardCollectionService to worker services

Co-authored-by: aider (anthropic/claude-sonnet-4-20250514) <aider@aider.chat>

+39
+39
src/shared/infrastructure/http/factories/ServiceFactory.ts
··· 37 37 import { FakeBlueskyProfileService } from '../../../../modules/atproto/infrastructure/services/FakeBlueskyProfileService'; 38 38 import { FakeAppPasswordSessionService } from '../../../../modules/atproto/infrastructure/services/FakeAppPasswordSessionService'; 39 39 import { FakeAtpAppPasswordProcessor } from '../../../../modules/atproto/infrastructure/services/FakeAtpAppPasswordProcessor'; 40 + import { ATProtoCollectionPublisher } from '../../../../modules/atproto/infrastructure/publishers/ATProtoCollectionPublisher'; 41 + import { ATProtoCardPublisher } from '../../../../modules/atproto/infrastructure/publishers/ATProtoCardPublisher'; 42 + import { FakeCollectionPublisher } from '../../../../modules/cards/tests/utils/FakeCollectionPublisher'; 43 + import { FakeCardPublisher } from '../../../../modules/cards/tests/utils/FakeCardPublisher'; 40 44 import { ITokenService } from 'src/modules/user/application/services/ITokenService'; 41 45 import { IOAuthProcessor } from 'src/modules/user/application/services/IOAuthProcessor'; 42 46 import { IAppPasswordProcessor } from 'src/modules/atproto/application/IAppPasswordProcessor'; ··· 94 98 eventPublisher: IEventPublisher; 95 99 createEventSubscriber: (queueName: QueueName) => IEventSubscriber; 96 100 sagaStateStore: ISagaStateStore; 101 + cardLibraryService: CardLibraryService; 102 + cardCollectionService: CardCollectionService; 97 103 } 98 104 99 105 // Legacy interface for backward compatibility ··· 236 242 ? new InMemorySagaStateStore() 237 243 : new RedisSagaStateStore(redisConnection!); 238 244 245 + // Create publishers needed for worker services 246 + const useFakePublishers = configService.shouldUseFakePublishers(); 247 + const collections = configService.getAtProtoCollections(); 248 + 249 + const collectionPublisher = useFakePublishers 250 + ? new FakeCollectionPublisher() 251 + : new ATProtoCollectionPublisher( 252 + sharedServices.atProtoAgentService, 253 + collections.collection, 254 + collections.collectionLink, 255 + ); 256 + 257 + const cardPublisher = useFakePublishers 258 + ? new FakeCardPublisher() 259 + : new ATProtoCardPublisher( 260 + sharedServices.atProtoAgentService, 261 + collections.card, 262 + ); 263 + 264 + // Create domain services needed by workers 265 + const cardCollectionService = new CardCollectionService( 266 + repositories.collectionRepository, 267 + collectionPublisher, 268 + ); 269 + const cardLibraryService = new CardLibraryService( 270 + repositories.cardRepository, 271 + cardPublisher, 272 + repositories.collectionRepository, 273 + cardCollectionService, 274 + ); 275 + 239 276 return { 240 277 ...sharedServices, 241 278 redisConnection: redisConnection, 242 279 eventPublisher, 243 280 createEventSubscriber, 244 281 sagaStateStore, 282 + cardLibraryService, 283 + cardCollectionService, 245 284 }; 246 285 } 247 286