mirror of
https://gitlab.com/mobicoop/v3/service/auth.git
synced 2026-01-02 20:52:41 +00:00
update and delete via message broker
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { RabbitSubscribe } from '@golevelup/nestjs-rabbitmq';
|
||||
import { Controller } from '@nestjs/common';
|
||||
import { CommandBus } from '@nestjs/cqrs';
|
||||
import { UpdateUsernameCommand } from '../../commands/update-username.command';
|
||||
import { Type } from '../../domain/dtos/type.enum';
|
||||
import { UpdateUsernameRequest } from '../../domain/dtos/update-username.request';
|
||||
import { DeleteAuthRequest } from '../../domain/dtos/delete-auth.request';
|
||||
import { DeleteAuthCommand } from '../../commands/delete-auth.command';
|
||||
|
||||
@Controller()
|
||||
export class AuthMessagerController {
|
||||
constructor(private readonly _commandBus: CommandBus) {}
|
||||
|
||||
@RabbitSubscribe({
|
||||
exchange: 'user',
|
||||
routingKey: 'user.update',
|
||||
})
|
||||
public async userUpdatedHandler(message: string) {
|
||||
const updatedUser = JSON.parse(message);
|
||||
if (!updatedUser.hasOwnProperty('uuid')) throw new Error();
|
||||
if (updatedUser.hasOwnProperty('email')) {
|
||||
const updateUsernameRequest = new UpdateUsernameRequest();
|
||||
updateUsernameRequest.uuid = updatedUser.uuid;
|
||||
updateUsernameRequest.username = updatedUser.email;
|
||||
updateUsernameRequest.type = Type.EMAIL;
|
||||
this._commandBus.execute(
|
||||
new UpdateUsernameCommand(updateUsernameRequest),
|
||||
);
|
||||
}
|
||||
if (updatedUser.hasOwnProperty('phone')) {
|
||||
const updateUsernameRequest = new UpdateUsernameRequest();
|
||||
updateUsernameRequest.uuid = updatedUser.uuid;
|
||||
updateUsernameRequest.username = updatedUser.phone;
|
||||
updateUsernameRequest.type = Type.PHONE;
|
||||
this._commandBus.execute(
|
||||
new UpdateUsernameCommand(updateUsernameRequest),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@RabbitSubscribe({
|
||||
exchange: 'user',
|
||||
routingKey: 'user.delete',
|
||||
})
|
||||
public async userDeletedHandler(message: string) {
|
||||
const deletedUser = JSON.parse(message);
|
||||
if (!deletedUser.hasOwnProperty('uuid')) throw new Error();
|
||||
const deleteAuthRequest = new DeleteAuthRequest();
|
||||
deleteAuthRequest.uuid = deletedUser.uuid;
|
||||
this._commandBus.execute(new DeleteAuthCommand(deleteAuthRequest));
|
||||
}
|
||||
}
|
||||
@@ -12,10 +12,30 @@ import { AddUsernameUseCase } from './domain/usecases/add-username.usecase';
|
||||
import { UpdatePasswordUseCase } from './domain/usecases/update-password.usecase';
|
||||
import { DeleteUsernameUseCase } from './domain/usecases/delete-username.usecase';
|
||||
import { DeleteAuthUseCase } from './domain/usecases/delete-auth.usecase';
|
||||
import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq';
|
||||
import { ConfigModule, ConfigService } from '@nestjs/config';
|
||||
import { AuthMessagerController } from './adapters/primaries/auth-messager.controller';
|
||||
|
||||
@Module({
|
||||
imports: [DatabaseModule, CqrsModule],
|
||||
controllers: [AuthController],
|
||||
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'),
|
||||
enableControllerDiscovery: true,
|
||||
}),
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
],
|
||||
controllers: [AuthController, AuthMessagerController],
|
||||
providers: [
|
||||
AuthProfile,
|
||||
UsernameProfile,
|
||||
|
||||
Reference in New Issue
Block a user