user/src/modules/users/users.module.ts

48 lines
1.7 KiB
TypeScript

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<string>('RMQ_EXCHANGE_NAME'),
type: configService.get<string>('RMQ_EXCHANGE_TYPE'),
},
],
uri: configService.get<string>('RMQ_URI'),
}),
inject: [ConfigService],
}),
],
controllers: [UsersController],
providers: [
UserProfile,
UsersRepository,
UserMessager,
FindAllUsersUseCase,
FindUserByUuidUseCase,
CreateUserUseCase,
UpdateUserUseCase,
DeleteUserUseCase,
],
exports: [],
})
export class UsersModule {}