Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { Logger } from '@nestjs/common';
import { CommandHandler, type ICommandHandler } from '@nestjs/cqrs';
import { pick } from 'lodash-es';
import { UnknownRecord } from 'type-fest';
import { PurgeCompanyDataCommand } from '@amalia/core/models';
import { AppLogger, InjectAppLogger, withLoggerContext } from '@amalia/kernel/logger/server';
import { AUDIT_DATASET_NAME } from '@amalia/tenants/monitoring/audit/core';
import { BigQueryService } from '@amalia/vendors/google-cloud/big-query';
import { SampleDataService } from '../sampleData.service';
@CommandHandler(PurgeCompanyDataCommand)
export class PurgeCompanyDataHandler implements ICommandHandler<PurgeCompanyDataCommand> {
private readonly logger = new Logger(PurgeCompanyDataHandler.name);
public constructor(
@InjectAppLogger(PurgeCompanyDataHandler.name)
private readonly appLogger: AppLogger,
private readonly sampleDataService: SampleDataService,
private readonly bigQueryService: BigQueryService,
) {}
public async execute(command: PurgeCompanyDataCommand): Promise<void> {
const { company } = command;
await withLoggerContext(this.appLogger, { company: pick(company, ['id', 'name']) }, async () => {
this.logger.log(`Purge Company data`);
await this.sampleDataService.purgeCompanyData(company);
try {
await this.bigQueryService.deleteTable(AUDIT_DATASET_NAME, company.slug);
} catch (e) {
if ((e as UnknownRecord)['code'] !== 404) {
throw e;
}
}
this.logger.log(`Company data fully purged`);
});
}
}
|