From d5178e743504f41f9090a0f200cdc031ae43d069 Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Mon, 5 Feb 2024 00:21:57 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20716:=20=E8=A1=8C=E3=83=AD?= =?UTF-8?q?=E3=83=83=E3=82=AF=E6=A8=AA=E5=B1=95=E9=96=8B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3473: 行ロック横展開5](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3473) 以下のリポジトリのメソッドについてlockを追加しました。 - worktypes - createWorktype - ワークタイプ取得にロックを追加して途中で追加できないようにする - updateWorktype - ワークタイプ取得にロックを追加して途中で同一ワークタイプIDが作られないようにする - deleteWorktype - ワークフロー取得にロックを追加して途中でワークタイプが紐づけられないようにする - updateOptionItems - ワークタイプ取得にロックを追加して同一ワークタイプに対してオプションアイテムを作らないようにする こちらの資料を参考にして対応しています。 [行ロックに関する影響調査](https://ndstokyo.sharepoint.com/:x:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E5%BD%B1%E9%9F%BF%E8%AA%BF%E6%9F%BB.xlsx?d=wdd6f3d97f7b04a538095c459f8eee2eb&csf=1&web=1&e=Y5l3aA) 対応内容についてはこちらにまとめています。 [行ロック5の対応整理](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/Task3473?csf=1&web=1&e=wqCx0Z) ## レビューポイント - 対応箇所は適切でしょうか? ## UIの変更 - なし ## 動作確認状況 - ローカルで確認 --- .../repositories/worktypes/worktypes.repository.service.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dictation_server/src/repositories/worktypes/worktypes.repository.service.ts b/dictation_server/src/repositories/worktypes/worktypes.repository.service.ts index f647288..07e1704 100644 --- a/dictation_server/src/repositories/worktypes/worktypes.repository.service.ts +++ b/dictation_server/src/repositories/worktypes/worktypes.repository.service.ts @@ -88,6 +88,7 @@ export class WorktypesRepositoryService { const duplicatedWorktype = await worktypeRepo.findOne({ where: { account_id: accountId, custom_worktype_id: worktypeId }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); // ワークタイプIDが重複している場合はエラー @@ -100,6 +101,7 @@ export class WorktypesRepositoryService { const worktypeCount = await worktypeRepo.count({ where: { account_id: accountId }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); // ワークタイプの登録数が上限に達している場合はエラー @@ -163,6 +165,7 @@ export class WorktypesRepositoryService { const worktype = await worktypeRepo.findOne({ where: { account_id: accountId, id: id }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); // ワークタイプが存在しない場合はエラー @@ -177,6 +180,7 @@ export class WorktypesRepositoryService { id: Not(id), }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); // ワークタイプIDが重複している場合はエラー @@ -227,6 +231,7 @@ export class WorktypesRepositoryService { const account = await accountRepo.findOne({ where: { id: accountId }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); if (account?.active_worktype_id === id) { @@ -244,6 +249,7 @@ export class WorktypesRepositoryService { const workflows = await workflowRepo.find({ where: { account_id: accountId, worktype_id: id }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); if (workflows.length > 0) { const workflowIds = workflows.map((workflow) => workflow.id); @@ -322,6 +328,7 @@ export class WorktypesRepositoryService { const worktype = await worktypeRepo.findOne({ where: { account_id: accountId, id: worktypeId }, comment: `${context.getTrackingId()}_${new Date().toUTCString()}`, + lock: { mode: 'pessimistic_write' }, }); // ワークタイプが存在しない場合はエラー if (!worktype) {