Merged PR 357: [Sp16-1]カードライセンスのレコード作成がbulkinsertになっていない

## 概要
[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登録・更新処理が想定通りに行われることを確認

## 補足
- 相談、参考資料などがあれば
This commit is contained in:
maruyama.t 2023-08-25 05:33:56 +00:00
parent 15d7119306
commit 7be84e9bbc
2 changed files with 22 additions and 9 deletions

View File

@ -312,7 +312,7 @@ describe('DBテスト', () => {
);
const service = module.get<LicensesService>(LicensesService);
const issueCount = 1000;
const issueCount = 500;
await service.issueCardLicenseKeys(externalId, issueCount);
const dbSelectResult = await selectCardLicensesCount(source);
expect(dbSelectResult.count).toEqual(issueCount);

View File

@ -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) {