import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq'; import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { CqrsModule } from '@nestjs/cqrs'; import { DatabaseModule } from '../database/database.module'; import { UsersController } from './adapters/primaries/users.controller'; import { UserMessager } from './adapters/secondaries/user.messager'; import { UsersRepository } from './adapters/secondaries/users.repository'; import { CreateUserUseCase } from './domain/usecases/create-user.usecase'; import { DeleteUserUseCase } from './domain/usecases/delete-user.usecase'; import { FindAllUsersUseCase } from './domain/usecases/find-all-users.usecase'; import { FindUserByUuidUseCase } from './domain/usecases/find-user-by-uuid.usecase'; import { UpdateUserUseCase } from './domain/usecases/update-user.usecase'; import { UserProfile } from './mappers/user.profile'; @Module({ imports: [ DatabaseModule, CqrsModule, RabbitMQModule.forRootAsync(RabbitMQModule, { imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ exchanges: [ { name: configService.get('RMQ_EXCHANGE_NAME'), type: configService.get('RMQ_EXCHANGE_TYPE'), }, ], uri: configService.get('RMQ_URI'), }), inject: [ConfigService], }), ], controllers: [UsersController], providers: [ UserProfile, UsersRepository, UserMessager, FindAllUsersUseCase, FindUserByUuidUseCase, CreateUserUseCase, UpdateUserUseCase, DeleteUserUseCase, ], exports: [], }) export class UsersModule {}