@exabugs/dynamodb-client 1.3.36 → 1.3.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,12 +5,16 @@ import type { UpdateOneParams, UpdateOneResult } from '../types.js';
5
5
  * 処理フロー:
6
6
  * 1. updateMany([id], data)を呼び出す(idまたはfilterから対象を特定)
7
7
  * 2. 結果を検証し、失敗した場合は通常のErrorをスロー
8
- * 3. 成功した場合は更新されたレコードをfindOneで取得して返却
8
+ * 3. 成功した場合は { id, ...更新したフィールドのみ } を返却
9
+ *
10
+ * セキュリティ: ADR 001に基づき、更新したフィールドのみを返却
11
+ * - read権限なしでupdate権限のみの場合の情報漏洩を防止
12
+ * - findOneの追加クエリを削減してパフォーマンス向上
9
13
  *
10
14
  * @param resource - リソース名
11
15
  * @param params - updateOneパラメータ
12
16
  * @param requestId - リクエストID
13
- * @returns 更新されたレコード
17
+ * @returns 更新されたレコード(idと更新したフィールドのみ)
14
18
  * @throws {Error} レコードが存在しない場合、または更新に失敗した場合
15
19
  */
16
20
  export declare function handleUpdateOne(resource: string, params: UpdateOneParams, requestId: string): Promise<UpdateOneResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIpE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAwF1B"}
1
+ {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIpE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CAkG1B"}
@@ -14,12 +14,16 @@ const logger = createLogger({ service: 'records-lambda' });
14
14
  * 処理フロー:
15
15
  * 1. updateMany([id], data)を呼び出す(idまたはfilterから対象を特定)
16
16
  * 2. 結果を検証し、失敗した場合は通常のErrorをスロー
17
- * 3. 成功した場合は更新されたレコードをfindOneで取得して返却
17
+ * 3. 成功した場合は { id, ...更新したフィールドのみ } を返却
18
+ *
19
+ * セキュリティ: ADR 001に基づき、更新したフィールドのみを返却
20
+ * - read権限なしでupdate権限のみの場合の情報漏洩を防止
21
+ * - findOneの追加クエリを削減してパフォーマンス向上
18
22
  *
19
23
  * @param resource - リソース名
20
24
  * @param params - updateOneパラメータ
21
25
  * @param requestId - リクエストID
22
- * @returns 更新されたレコード
26
+ * @returns 更新されたレコード(idと更新したフィールドのみ)
23
27
  * @throws {Error} レコードが存在しない場合、または更新に失敗した場合
24
28
  */
25
29
  export async function handleUpdateOne(resource, params, requestId) {
@@ -53,10 +57,15 @@ export async function handleUpdateOne(resource, params, requestId) {
53
57
  throw new Error(`Failed to update record: ${targetId}`);
54
58
  }
55
59
  }
56
- // 成功した場合は更新されたレコードをfindOneで取得
57
- const { handleFindOne } = await import('./findOne.js');
58
- const updatedRecord = await handleFindOne(resource, { id: targetId }, requestId);
59
- return updatedRecord;
60
+ // 成功した場合は { id, ...更新したフィールドのみ } を返却
61
+ // UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
62
+ const actualPatchData = patchData.$set
63
+ ? patchData.$set
64
+ : patchData;
65
+ return {
66
+ id: targetId,
67
+ ...actualPatchData,
68
+ };
60
69
  }
61
70
  else {
62
71
  // filterが指定されている場合
@@ -87,10 +96,15 @@ export async function handleUpdateOne(resource, params, requestId) {
87
96
  if (!updatedId) {
88
97
  throw new Error('Failed to get updated record ID');
89
98
  }
90
- // findOneで更新されたレコードを取得
91
- const { handleFindOne } = await import('./findOne.js');
92
- const updatedRecord = await handleFindOne(resource, { id: updatedId }, requestId);
93
- return updatedRecord;
99
+ // { id, ...更新したフィールドのみ } を返却
100
+ // UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
101
+ const actualPatchData = patchData.$set
102
+ ? patchData.$set
103
+ : patchData;
104
+ return {
105
+ id: updatedId,
106
+ ...actualPatchData,
107
+ };
94
108
  }
95
109
  }
96
110
  //# sourceMappingURL=updateOne.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.js","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateOne.js","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exabugs/dynamodb-client",
3
- "version": "1.3.36",
3
+ "version": "1.3.37",
4
4
  "description": "DynamoDB Single-Table Client SDK with MongoDB-like API, Shadow Records, and Lambda implementation for serverless applications",
5
5
  "author": "exabugs",
6
6
  "license": "MIT",