matcher/src/modules/ad/ad.modules.ts

43 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-04-24 14:44:52 +00:00
import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq';
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AdMessagerController } from './adapters/primaries/ad-messager.controller';
import { AdProfile } from './mappers/ad.profile';
import { CreateAdUseCase } from './domain/usecases/create-ad.usecase';
import { AdRepository } from './adapters/secondaries/ad.repository';
import { DatabaseModule } from '../database/database.module';
import { CqrsModule } from '@nestjs/cqrs';
2023-04-24 14:44:52 +00:00
@Module({
imports: [
DatabaseModule,
CqrsModule,
2023-04-24 14:44:52 +00:00
RabbitMQModule.forRootAsync(RabbitMQModule, {
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
exchanges: [
{
name: configService.get<string>('RMQ_EXCHANGE'),
type: 'topic',
},
],
handlers: {
adCreated: {
exchange: configService.get<string>('RMQ_EXCHANGE'),
routingKey: 'ad.created',
queue: 'matcher-ad-created',
2023-04-24 14:44:52 +00:00
},
},
uri: configService.get<string>('RMQ_URI'),
2023-04-24 14:55:14 +00:00
connectionInitOptions: { wait: false },
2023-04-24 14:44:52 +00:00
enableControllerDiscovery: true,
}),
inject: [ConfigService],
}),
],
controllers: [AdMessagerController],
providers: [AdProfile, AdRepository, CreateAdUseCase],
2023-04-24 14:44:52 +00:00
exports: [],
})
export class AdModule {}