78 lines
2.9 KiB
TypeScript
78 lines
2.9 KiB
TypeScript
import { RabbitSubscribe } from '@golevelup/nestjs-rabbitmq';
|
|
import { Controller } from '@nestjs/common';
|
|
import { ConfigService } from '@nestjs/config';
|
|
import { CommandBus } from '@nestjs/cqrs';
|
|
import { DeleteConfigurationCommand } from '../../commands/delete-configuration.command';
|
|
import { SetConfigurationCommand } from '../../commands/set-configuration.command';
|
|
import { DeleteConfigurationRequest } from '../../domain/dtos/delete-configuration.request';
|
|
import { SetConfigurationRequest } from '../../domain/dtos/set-configuration.request';
|
|
import { Configuration } from '../../domain/entities/configuration';
|
|
|
|
@Controller()
|
|
export class ConfigurationMessagerController {
|
|
constructor(
|
|
private readonly _commandBus: CommandBus,
|
|
private readonly _configService: ConfigService,
|
|
) {}
|
|
|
|
@RabbitSubscribe({
|
|
name: 'setConfiguration',
|
|
})
|
|
public async setConfigurationHandler(message: string) {
|
|
const configuration: Configuration = JSON.parse(message);
|
|
if (
|
|
configuration.domain ==
|
|
this._configService.get<string>('SERVICE_CONFIGURATION_DOMAIN')
|
|
) {
|
|
const setConfigurationRequest: SetConfigurationRequest =
|
|
new SetConfigurationRequest();
|
|
setConfigurationRequest.domain = configuration.domain;
|
|
setConfigurationRequest.key = configuration.key;
|
|
setConfigurationRequest.value = configuration.value;
|
|
await this._commandBus.execute(
|
|
new SetConfigurationCommand(setConfigurationRequest),
|
|
);
|
|
}
|
|
}
|
|
|
|
@RabbitSubscribe({
|
|
name: 'deleteConfiguration',
|
|
})
|
|
public async configurationDeletedHandler(message: string) {
|
|
const deletedConfiguration: Configuration = JSON.parse(message);
|
|
if (
|
|
deletedConfiguration.domain ==
|
|
this._configService.get<string>('SERVICE_CONFIGURATION_DOMAIN')
|
|
) {
|
|
const deleteConfigurationRequest = new DeleteConfigurationRequest();
|
|
deleteConfigurationRequest.domain = deletedConfiguration.domain;
|
|
deleteConfigurationRequest.key = deletedConfiguration.key;
|
|
await this._commandBus.execute(
|
|
new DeleteConfigurationCommand(deleteConfigurationRequest),
|
|
);
|
|
}
|
|
}
|
|
|
|
@RabbitSubscribe({
|
|
name: 'propagateConfiguration',
|
|
})
|
|
public async propagateConfigurationsHandler(message: string) {
|
|
const configurations: Array<Configuration> = JSON.parse(message);
|
|
configurations.forEach(async (configuration) => {
|
|
if (
|
|
configuration.domain ==
|
|
this._configService.get<string>('SERVICE_CONFIGURATION_DOMAIN')
|
|
) {
|
|
const setConfigurationRequest: SetConfigurationRequest =
|
|
new SetConfigurationRequest();
|
|
setConfigurationRequest.domain = configuration.domain;
|
|
setConfigurationRequest.key = configuration.key;
|
|
setConfigurationRequest.value = configuration.value;
|
|
await this._commandBus.execute(
|
|
new SetConfigurationCommand(setConfigurationRequest),
|
|
);
|
|
}
|
|
});
|
|
}
|
|
}
|