import { Module } from '@nestjs/common'; import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { UserController } from './logger/adapters/primaries/user.controller'; import { WinstonModule } from 'nest-winston'; import * as winston from 'winston'; import { AuthController } from './logger/adapters/primaries/auth.controller'; import { ConfigurationController } from './logger/adapters/primaries/configuration.controller'; import { TerritoryController } from './logger/adapters/primaries/territory.controller'; import { GatewayApiController } from './logger/adapters/primaries/gateway-api.controller'; import { AdminApiController } from './logger/adapters/primaries/admin-api.controller'; @Module({ imports: [ RabbitMQModule.forRootAsync(RabbitMQModule, { imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ exchanges: [ { name: configService.get('RMQ_EXCHANGE'), type: 'topic', }, ], handlers: { loggingGatewayApiHealthCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.gateway-api.health.crit', }, loggingAdminApiHealthCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.admin-api.health.crit', }, loggingAuthCreateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.create.crit', }, loggingAuthDeleteCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.delete.crit', }, loggingAuthUsernameAddWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.username.add.warning', }, loggingAuthUsernameDeleteWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.username.delete.warning', }, loggingAuthPasswordUpdateWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.password.update.warning', }, loggingAuthUsernameUpdateWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.auth.username.update.warning', }, loggingConfigurationCreateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.create.info', }, loggingConfigurationCreateWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.create.warning', }, loggingConfigurationCreateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.create.crit', }, loggingConfigurationDeleteInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.delete.info', }, loggingConfigurationDeleteCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.delete.crit', }, loggingConfigurationReadWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.read.warning', }, loggingConfigurationUpdateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.update.info', }, loggingConfigurationUpdateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.configuration.update.crit', }, loggingTerritoryCreateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.create.info', }, loggingTerritoryCreateWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.create.warning', }, loggingTerritoryCreateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.create.crit', }, loggingTerritoryDeleteInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.delete.info', }, loggingTerritoryDeleteCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.delete.crit', }, loggingTerritoryReadWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.read.warning', }, loggingTerritoryUpdateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.update.info', }, loggingTerritoryUpdateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.territory.update.crit', }, loggingUserCreateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.create.info', }, loggingUserCreateWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.create.warning', }, loggingUserCreateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.create.crit', }, loggingUserDeleteInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.delete.info', }, loggingUserDeleteCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.delete.crit', }, loggingUserReadWarning: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.read.warning', }, loggingUserUpdateInfo: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.update.info', }, loggingUserUpdateCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.update.crit', }, loggingUserHealthCrit: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'logging.user.health.crit', }, }, uri: configService.get('RMQ_URI'), connectionInitOptions: { wait: false }, enableControllerDiscovery: true, }), inject: [ConfigService], }), WinstonModule.forRoot({ levels: winston.config.syslog.levels, transports: [], }), ], controllers: [ AuthController, UserController, ConfigurationController, TerritoryController, GatewayApiController, AdminApiController, ], providers: [], exports: [], }) export class LoggerModule {}