## 概要 [Task3569: データ削除ツール作成+動作確認](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3569) - データ削除ツールを実装しました。 - Blobストレージからのコンテナ削除 - ADB2Cからのユーザー削除 - DBの全削除 - Auto Incrementの設定 ## レビューポイント - Blobストレージの削除対象の取得に問題はないでしょうか? - 3つのリージョン内のすべてのコンテナを取得してから、取得したコンテナを全削除するようにしています。 - ADB2Cの削除対象の取得に問題はないでしょうか? - ローカルアカウントなユーザーのみを取得してから、取得したユーザーを全削除するようにしています。 - フォルダ構成に違和感はないでしょうか? ## UIの変更 - [Task3569](https://ndstokyo.sharepoint.com/:f:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/Task3569?csf=1&web=1&e=wU1st1) ## 動作確認状況 - ローカルで確認 - DB操作のみ確認しています。Azureリソースの削除についてはdevelop環境で改めて実施します。
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { HttpException, HttpStatus, Injectable, Logger } from "@nestjs/common";
|
|
import { DeleteRepositoryService } from "../../repositories/delete/delete.repository.service";
|
|
import { makeErrorResponse } from "../../common/errors/makeErrorResponse";
|
|
import { AdB2cService } from "../../gateways/adb2c/adb2c.service";
|
|
import { BlobstorageService } from "../../gateways/blobstorage/blobstorage.service";
|
|
|
|
@Injectable()
|
|
export class DeleteService {
|
|
private readonly logger = new Logger(DeleteService.name);
|
|
constructor(
|
|
private readonly deleteRepositoryService: DeleteRepositoryService,
|
|
private readonly blobstorageService: BlobstorageService,
|
|
private readonly adB2cService: AdB2cService
|
|
) {}
|
|
|
|
/**
|
|
* データを削除する
|
|
* @returns data
|
|
*/
|
|
async deleteData(): Promise<void> {
|
|
this.logger.log(`[IN] ${this.deleteData.name}`);
|
|
try {
|
|
// BlobStorageからデータを削除する
|
|
await this.blobstorageService.deleteContainers();
|
|
|
|
// ADB2Cからユーザ情報を取得する
|
|
const users = await this.adB2cService.getUsers();
|
|
const externalIds = users.map((user) => user.id);
|
|
await this.adB2cService.deleteUsers(externalIds);
|
|
|
|
// データベースからデータを削除する
|
|
await this.deleteRepositoryService.deleteData();
|
|
// AutoIncrementの値をリセットする
|
|
await this.deleteRepositoryService.resetAutoIncrement();
|
|
} catch (e) {
|
|
this.logger.error(`error=${e}`);
|
|
if (e instanceof Error) {
|
|
switch (e.constructor) {
|
|
default:
|
|
throw new HttpException(
|
|
makeErrorResponse("E009999"),
|
|
HttpStatus.INTERNAL_SERVER_ERROR
|
|
);
|
|
}
|
|
}
|
|
throw new HttpException(
|
|
makeErrorResponse("E009999"),
|
|
HttpStatus.INTERNAL_SERVER_ERROR
|
|
);
|
|
} finally {
|
|
this.logger.log(`[OUT] ${this.deleteData.name}`);
|
|
}
|
|
}
|
|
}
|