From 7be84e9bbc58e120d9aacdf18e80be7086b4c039 Mon Sep 17 00:00:00 2001 From: "maruyama.t" Date: Fri, 25 Aug 2023 05:33:56 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20357:=20[Sp16-1]=E3=82=AB=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3=E3=82=B9=E3=81=AE?= =?UTF-8?q?=E3=83=AC=E3=82=B3=E3=83=BC=E3=83=89=E4=BD=9C=E6=88=90=E3=81=8C?= =?UTF-8?q?bulkinsert=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task2409: [Sp16-1]カードライセンスのレコード作成がbulkinsertになっていない](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2409) - 元PBI or タスクへのリンク(内容・目的などはそちらにあるはず) - 何をどう変更したか、追加したライブラリなど push→saveではなく、QueryBuilderを使用してバルクインサートを行うよう修正。 - このPull Requestでの対象/対象外 - 影響範囲(他の機能にも影響があるか) 既存のカードライセンス発行処理 既存のライセンス発行処理 ## レビューポイント - 特にレビューしてほしい箇所 - 軽微なものや自明なものは記載不要 - 修正範囲が大きい場合などに記載 - 全体的にや仕様を満たしているか等は本当に必要な時のみ記載 ## UIの変更 - Before/Afterのスクショなど - スクショ置き場 ## 動作確認状況 - ローカルで確認 既存ユニットテスト +ローカル環境でカードライセンステーブル、ライセンステーブルへのDB登録・更新処理が想定通りに行われることを確認 ## 補足 - 相談、参考資料などがあれば --- .../licenses/licenses.service.spec.ts | 2 +- .../licenses/licenses.repository.service.ts | 29 ++++++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/dictation_server/src/features/licenses/licenses.service.spec.ts b/dictation_server/src/features/licenses/licenses.service.spec.ts index ee7ac87..8438279 100644 --- a/dictation_server/src/features/licenses/licenses.service.spec.ts +++ b/dictation_server/src/features/licenses/licenses.service.spec.ts @@ -312,7 +312,7 @@ describe('DBテスト', () => { ); const service = module.get(LicensesService); - const issueCount = 1000; + const issueCount = 500; await service.issueCardLicenseKeys(externalId, issueCount); const dbSelectResult = await selectCardLicensesCount(source); expect(dbSelectResult.count).toEqual(issueCount); diff --git a/dictation_server/src/repositories/licenses/licenses.repository.service.ts b/dictation_server/src/repositories/licenses/licenses.repository.service.ts index 38bfcee..675aaf9 100644 --- a/dictation_server/src/repositories/licenses/licenses.repository.service.ts +++ b/dictation_server/src/repositories/licenses/licenses.repository.service.ts @@ -103,8 +103,7 @@ export class LicensesRepositoryService { const cardLicenseIssueRepo = entityManager.getRepository(CardLicenseIssue); - const licenses = []; - //TODO タスク 2409: カードライセンスのレコード作成がbulkinsertになっていない + const licenses: License[] = []; // ライセンステーブルを作成する(BULK INSERT) for (let i = 0; i < count; i++) { const license = new License(); @@ -113,7 +112,12 @@ export class LicensesRepositoryService { license.type = LICENSE_TYPE.CARD; licenses.push(license); } - const savedLicenses = await licensesRepo.save(licenses); + const savedLicenses = await licensesRepo + .createQueryBuilder() + .insert() + .into(License) + .values(licenses) + .execute(); // カードライセンス発行テーブルを作成する const cardLicenseIssue = new CardLicenseIssue(); @@ -160,17 +164,21 @@ export class LicensesRepositoryService { isDuplicateKeysExist = false; } - const cardLicenses = []; - //TODO タスク 2409: カードライセンスのレコード作成がbulkinsertになっていない + const cardLicenses: CardLicense[] = []; // カードライセンステーブルを作成する(BULK INSERT) for (let i = 0; i < count; i++) { const cardLicense = new CardLicense(); - cardLicense.license_id = savedLicenses[i].id; // Licenseテーブルの自動採番されたIDを挿入 + cardLicense.license_id = savedLicenses.generatedMaps[i].id; // Licenseテーブルの自動採番されたIDを挿入 cardLicense.issue_id = savedCardLicensesIssue.id; // CardLicenseIssueテーブルの自動採番されたIDを挿入 cardLicense.card_license_key = licenseKeys[i]; cardLicenses.push(cardLicense); } - await cardLicenseRepo.save(cardLicenses); + await cardLicenseRepo + .createQueryBuilder() + .insert() + .into(CardLicense) + .values(cardLicenses) + .execute(); }); return licenseKeys; } @@ -367,7 +375,12 @@ export class LicensesRepositoryService { }, ); // ライセンステーブルを登録(注文元) - await licenseRepo.save(newLicenses); + await licenseRepo + .createQueryBuilder() + .insert() + .into(License) + .values(newLicenses) + .execute(); // 第一階層の場合はストックライセンスの概念が存在しないため、ストックライセンス変更処理は行わない if (tier !== TIERS.TIER1) {