From deb753b40d4680989cfb4a8c3352e7dc4a0a2dc8 Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Fri, 18 Aug 2023 08:38:10 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20329:=20API=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=EF=BC=88BlobStorage=E3=81=AE=E3=82=B3=E3=83=B3=E3=83=86?= =?UTF-8?q?=E3=83=8A=E3=82=92=E5=89=8A=E9=99=A4=E3=81=99=E3=82=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task2395: API実装(BlobStorageのコンテナを削除する)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2395) - BlobStorageコンテナを削除するgatewayメソッドを実装しました。 ## レビューポイント - 処理内容に問題はないか - コンテナの有無を見て結果を返すように実装したが作りとして問題はないか ## UIの変更 - なし ## 動作確認状況 - ローカルで確認 --- .../blobstorage/blobstorage.service.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/dictation_server/src/gateways/blobstorage/blobstorage.service.ts b/dictation_server/src/gateways/blobstorage/blobstorage.service.ts index a66395d..0c5d6af 100644 --- a/dictation_server/src/gateways/blobstorage/blobstorage.service.ts +++ b/dictation_server/src/gateways/blobstorage/blobstorage.service.ts @@ -83,6 +83,49 @@ export class BlobstorageService { ); } } + + /** + * 指定されたコンテナを削除します。(コンテナが存在しない場合、何もせず終了します) + * @param context + * @param accountId + * @param country + */ + async deleteContainer( + context: Context, + accountId: number, + country: string, + ): Promise { + this.logger.log( + `[IN] [${context.trackingId}] ${this.deleteContainer.name}`, + ); + + try { + // 国に応じたリージョンでコンテナ名を指定してClientを取得 + const containerClient = this.getContainerClient(accountId, country); + const { succeeded, errorCode, date } = + await containerClient.deleteIfExists(); + this.logger.log( + `succeeded: ${succeeded}, errorCode: ${errorCode}, date: ${date}`, + ); + + // 失敗時、コンテナが存在しない場合以外はエラーとして例外をスローする + // コンテナ不在の場合のエラーコードは「ContainerNotFound」以下を参照 + // https://learn.microsoft.com/ja-jp/rest/api/storageservices/blob-service-error-codes + if (!succeeded && errorCode !== 'ContainerNotFound') { + throw new Error( + `delete blob container failed. succeeded: ${succeeded}, errorCode: ${errorCode}, date: ${date}`, + ); + } + } catch (e) { + this.logger.error(`error=${e}`); + throw e; + } finally { + this.logger.log( + `[OUT] [${context.trackingId}] ${this.deleteContainer.name}`, + ); + } + } + /** * Containers exists * @param country