makabe.t a9aca6e4ff Merged PR 750: データ削除ツール作成+動作確認
## 概要
[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環境で改めて実施します。
2024-02-20 10:09:05 +00:00

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}`);
}
}
}