@exabugs/dynamodb-client 1.3.35 → 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.
Files changed (30) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/server/handler.cjs +710 -1639
  3. package/dist/server/handler.cjs.map +4 -4
  4. package/dist/server/operations/deleteOne.d.ts +4 -5
  5. package/dist/server/operations/deleteOne.d.ts.map +1 -1
  6. package/dist/server/operations/deleteOne.js +51 -71
  7. package/dist/server/operations/deleteOne.js.map +1 -1
  8. package/dist/server/operations/findMany.d.ts +4 -2
  9. package/dist/server/operations/findMany.d.ts.map +1 -1
  10. package/dist/server/operations/findMany.js +66 -39
  11. package/dist/server/operations/findMany.js.map +1 -1
  12. package/dist/server/operations/findOne.d.ts +4 -4
  13. package/dist/server/operations/findOne.d.ts.map +1 -1
  14. package/dist/server/operations/findOne.js +28 -41
  15. package/dist/server/operations/findOne.js.map +1 -1
  16. package/dist/server/operations/insertOne.d.ts +4 -5
  17. package/dist/server/operations/insertOne.d.ts.map +1 -1
  18. package/dist/server/operations/insertOne.js +33 -48
  19. package/dist/server/operations/insertOne.js.map +1 -1
  20. package/dist/server/operations/parameterConverter.d.ts +1 -0
  21. package/dist/server/operations/parameterConverter.d.ts.map +1 -1
  22. package/dist/server/operations/parameterConverter.js +13 -5
  23. package/dist/server/operations/parameterConverter.js.map +1 -1
  24. package/dist/server/operations/updateOne.d.ts +9 -7
  25. package/dist/server/operations/updateOne.d.ts.map +1 -1
  26. package/dist/server/operations/updateOne.js +68 -267
  27. package/dist/server/operations/updateOne.js.map +1 -1
  28. package/dist/server/types.d.ts +2 -10
  29. package/dist/server/types.d.ts.map +1 -1
  30. package/package.json +1 -1
@@ -3,75 +3,60 @@
3
3
  * 単一レコードを作成する
4
4
  *
5
5
  * 要件: 4.1, 4.2, 5.2, 5.3
6
+ *
7
+ * リファクタリング: insertManyを内部で使用
6
8
  */
7
- import { PutCommand } from '@aws-sdk/lib-dynamodb';
8
- import { createLogger, ulid } from '../../shared/index.js';
9
- import { generateShadowRecords, getShadowConfig } from '../shadow/index.js';
10
- import { generateMainRecordSK } from '../shadow/index.js';
11
- import { executeDynamoDBOperation, getDBClient, getTableName, } from '../utils/dynamodb.js';
12
- import { addCreateTimestamps } from '../utils/timestamps.js';
13
- import { addTTL } from '../utils/ttl.js';
9
+ import { createLogger } from '../../shared/index.js';
14
10
  const logger = createLogger({ service: 'records-lambda' });
15
11
  /**
16
12
  * insertOne 操作を実行する
17
13
  *
18
14
  * 処理フロー:
19
- * 1. ULIDを生成してレコードIDを作成
20
- * 2. createdAt, updatedAtタイムスタンプを追加
21
- * 3. シャドー設定を読み込み、全シャドーSKを生成
22
- * 4. メインレコードをPutItemで保存
23
- * 5. シャドーレコードをPutItemで保存
15
+ * 1. insertMany([data])を呼び出す
16
+ * 2. 結果を検証し、失敗した場合は通常のErrorをスロー
17
+ * 3. 成功した場合は作成されたレコードをfindOneで取得して返却
24
18
  *
25
19
  * @param resource - リソース名
26
20
  * @param params - insertOneパラメータ
27
21
  * @param requestId - リクエストID
28
22
  * @returns 作成されたレコード
23
+ * @throws {Error} レコード作成に失敗した場合
29
24
  */
30
25
  export async function handleInsertOne(resource, params, requestId) {
31
26
  logger.debug('Executing insertOne', {
32
27
  requestId,
33
28
  resource,
34
29
  });
35
- const dbClient = getDBClient();
36
- const tableName = getTableName();
37
- // IDを決定(指定されていればそれを使用、なければULIDを生成)
38
- const id = params.data.id || ulid();
39
- // レコードデータを構築(id、タイムスタンプ、TTLを追加)
40
- let recordData = addCreateTimestamps({
41
- ...params.data,
42
- id,
43
- });
44
- // TTLを追加(リソースに応じて)
45
- recordData = addTTL(resource, recordData);
46
- // シャドー設定を取得(環境変数からキャッシュ付き)
47
- const shadowConfig = getShadowConfig();
48
- // シャドーレコードを生成(自動フィールド検出)
49
- const shadowRecords = generateShadowRecords(recordData, resource, shadowConfig);
50
- // メインレコードのSKを生成
51
- const mainSK = generateMainRecordSK(id);
52
- // メインレコードを保存
53
- await executeDynamoDBOperation(() => dbClient.send(new PutCommand({
54
- TableName: tableName,
55
- Item: {
56
- PK: resource,
57
- SK: mainSK,
58
- data: recordData,
59
- },
60
- })), 'PutItem');
61
- // シャドーレコードを保存
62
- for (const shadowRecord of shadowRecords) {
63
- await executeDynamoDBOperation(() => dbClient.send(new PutCommand({
64
- TableName: tableName,
65
- Item: shadowRecord,
66
- })), 'PutItem');
30
+ // insertManyをインポート
31
+ const { handleInsertMany } = await import('./insertMany.js');
32
+ // insertMany([data])を呼び出す
33
+ const insertManyResult = await handleInsertMany(resource, {
34
+ data: [params.data],
35
+ }, requestId);
36
+ // 結果を検証
37
+ if (insertManyResult.count === 0) {
38
+ // 作成に失敗した場合
39
+ const error = Object.values(insertManyResult.errors)[0];
40
+ if (error) {
41
+ throw new Error(`Failed to create record: ${error.message}`);
42
+ }
43
+ else {
44
+ throw new Error('Failed to create record');
45
+ }
46
+ }
47
+ // 成功した場合は作成されたレコードのIDを取得
48
+ const createdId = Object.values(insertManyResult.successIds)[0];
49
+ if (!createdId) {
50
+ throw new Error('Failed to get created record ID');
67
51
  }
52
+ // 既存のインターフェースを維持: 作成されたレコードを取得して返す
53
+ const { handleFindOne } = await import('./findOne.js');
54
+ const createdRecord = await handleFindOne(resource, { id: createdId }, requestId);
68
55
  logger.info('insertOne succeeded', {
69
56
  requestId,
70
57
  resource,
71
- id,
72
- shadowCount: shadowRecords.length,
58
+ id: createdId,
73
59
  });
74
- // レコードデータを返す
75
- return recordData;
60
+ return createdRecord;
76
61
  }
77
62
  //# sourceMappingURL=insertOne.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insertOne.js","sourceRoot":"","sources":["../../../src/server/operations/insertOne.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAuB,EACvB,SAAiB;IAEjB,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAClC,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,mCAAmC;IACnC,MAAM,EAAE,GAAI,MAAM,CAAC,IAAI,CAAC,EAAyB,IAAI,IAAI,EAAE,CAAC;IAE5D,gCAAgC;IAChC,IAAI,UAAU,GAA4B,mBAAmB,CAAC;QAC5D,GAAG,MAAM,CAAC,IAAI;QACd,EAAE;KACH,CAAC,CAAC;IAEH,mBAAmB;IACnB,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,yBAAyB;IACzB,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEhF,gBAAgB;IAChB,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAExC,aAAa;IACb,MAAM,wBAAwB,CAC5B,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CACX,IAAI,UAAU,CAAC;QACb,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE;YACJ,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,UAAU;SACjB;KACF,CAAC,CACH,EACH,SAAS,CACV,CAAC;IAEF,cAAc;IACd,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,wBAAwB,CAC5B,GAAG,EAAE,CACH,QAAQ,CAAC,IAAI,CACX,IAAI,UAAU,CAAC;YACb,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,YAAY;SACnB,CAAC,CACH,EACH,SAAS,CACV,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;QACjC,SAAS;QACT,QAAQ;QACR,EAAE;QACF,WAAW,EAAE,aAAa,CAAC,MAAM;KAClC,CAAC,CAAC;IAEH,aAAa;IACb,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"insertOne.js","sourceRoot":"","sources":["../../../src/server/operations/insertOne.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAuB,EACvB,SAAiB;IAEjB,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAClC,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7D,0BAA0B;IAC1B,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,QAAQ,EACR;QACE,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;KACpB,EACD,SAAS,CACV,CAAC;IAEF,QAAQ;IACR,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACjC,YAAY;QACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,mCAAmC;IACnC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;IAElF,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;QACjC,SAAS;QACT,QAAQ;QACR,EAAE,EAAE,SAAS;KACd,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -68,6 +68,7 @@ export declare function convertFindOneParams(mongoParams: MongoFilterParams): Fi
68
68
  *
69
69
  * @param mongoParams - MongoDB風のfindManyパラメータ
70
70
  * @returns 内部形式のfindManyパラメータ
71
+ * @throws {Error} filterが指定されていない場合
71
72
  */
72
73
  export declare function convertFindManyParams(mongoParams: MongoFilterParams): FindManyParams;
73
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parameterConverter.d.ts","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,CAAC,EACH;QACE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,UAAU,CAsB1E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,CAgBlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,cAAc,CAOpF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,GAAG,eAAe,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAuCtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAiBxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAMtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAO3F"}
1
+ {"version":3,"file":"parameterConverter.d.ts","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,CAAC,EACH;QACE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,UAAU,CAsB1E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,CAgBlF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,cAAc,CAgBpF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,GAAG,eAAe,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAuCtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAiBxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAMtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAO3F"}
@@ -51,13 +51,21 @@ export function convertFindOneParams(mongoParams) {
51
51
  *
52
52
  * @param mongoParams - MongoDB風のfindManyパラメータ
53
53
  * @returns 内部形式のfindManyパラメータ
54
+ * @throws {Error} filterが指定されていない場合
54
55
  */
55
56
  export function convertFindManyParams(mongoParams) {
56
- const idFilter = mongoParams.filter?.id;
57
- const ids = typeof idFilter === 'object' && idFilter !== null && '$in' in idFilter
58
- ? idFilter.$in || []
59
- : [];
60
- return { ids };
57
+ // filterが存在しない場合はエラー
58
+ if (!mongoParams.filter) {
59
+ throw new Error('findMany requires filter');
60
+ }
61
+ const idFilter = mongoParams.filter.id;
62
+ // filter.id.$inが存在する場合はidsとして使用(後方互換性)
63
+ if (typeof idFilter === 'object' && idFilter !== null && '$in' in idFilter) {
64
+ const ids = idFilter.$in || [];
65
+ return { ids };
66
+ }
67
+ // idが存在しない場合はfilter全体を使用
68
+ return { filter: mongoParams.filter };
61
69
  }
62
70
  /**
63
71
  * MongoDB風のinsertOneパラメータを内部形式に変換する
@@ -1 +1 @@
1
- {"version":3,"file":"parameterConverter.js","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parameterConverter.js","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,19 @@ import type { UpdateOneParams, UpdateOneResult } from '../types.js';
3
3
  * updateOne 操作を実行する
4
4
  *
5
5
  * 処理フロー:
6
- * 1. filterまたはidから対象レコードを特定
7
- * 2. レコードが存在しない場合:
8
- * - upsert=falseの場合はエラー
9
- * - upsert=trueの場合は新規作成
10
- * 3. レコードが存在する場合は更新
6
+ * 1. updateMany([id], data)を呼び出す(idまたはfilterから対象を特定)
7
+ * 2. 結果を検証し、失敗した場合は通常のErrorをスロー
8
+ * 3. 成功した場合は { id, ...更新したフィールドのみ } を返却
9
+ *
10
+ * セキュリティ: ADR 001に基づき、更新したフィールドのみを返却
11
+ * - read権限なしでupdate権限のみの場合の情報漏洩を防止
12
+ * - findOneの追加クエリを削減してパフォーマンス向上
11
13
  *
12
14
  * @param resource - リソース名
13
15
  * @param params - updateOneパラメータ
14
16
  * @param requestId - リクエストID
15
- * @returns 更新されたレコード
16
- * @throws {ItemNotFoundError} レコードが存在しない場合(upsert=falseの場合)
17
+ * @returns 更新されたレコード(idと更新したフィールドのみ)
18
+ * @throws {Error} レコードが存在しない場合、または更新に失敗した場合
17
19
  */
18
20
  export declare function handleUpdateOne(resource: string, params: UpdateOneParams, requestId: string): Promise<UpdateOneResult>;
19
21
  //# sourceMappingURL=updateOne.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuDpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA8G1B"}
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"}
@@ -3,71 +3,35 @@
3
3
  * 単一レコードを更新する(JSON Merge Patch形式)
4
4
  *
5
5
  * 要件: 4.2, 4.4, 5.2, 5.3
6
- */
7
- import { GetCommand, TransactWriteCommand } from '@aws-sdk/lib-dynamodb';
8
- import { ItemNotFoundError, createLogger } from '../../shared/index.js';
9
- import { generateShadowRecords, getShadowConfig } from '../shadow/index.js';
10
- import { calculateShadowDiff, generateMainRecordSK, isDiffEmpty } from '../shadow/index.js';
11
- import { executeDynamoDBOperation, getDBClient, getTableName, removeShadowKeys, } from '../utils/dynamodb.js';
12
- import { addCreateTimestamps, addUpdateTimestamp } from '../utils/timestamps.js';
13
- const logger = createLogger({ service: 'records-lambda' });
14
- /**
15
- * JSON Merge Patch (RFC 7396) を適用する
16
6
  *
17
- * ルール:
18
- * - null値はフィールド削除を意味する
19
- * - 配列は完全置換される
20
- * - オブジェクトは再帰的にマージされる
21
- *
22
- * @param target - 対象オブジェクト
23
- * @param patch - パッチオブジェクト
24
- * @returns マージされたオブジェクト
7
+ * リファクタリング: updateManyを内部で使用
25
8
  */
26
- function applyJsonMergePatch(target, patch) {
27
- const result = { ...target };
28
- for (const [key, value] of Object.entries(patch)) {
29
- if (value === null) {
30
- // null値はフィールド削除
31
- delete result[key];
32
- }
33
- else if (typeof value === 'object' &&
34
- !Array.isArray(value) &&
35
- value !== null &&
36
- typeof result[key] === 'object' &&
37
- !Array.isArray(result[key]) &&
38
- result[key] !== null) {
39
- // オブジェクトは再帰的にマージ
40
- result[key] = applyJsonMergePatch(result[key], value);
41
- }
42
- else {
43
- // その他(配列、プリミティブ)は完全置換
44
- result[key] = value;
45
- }
46
- }
47
- return result;
48
- }
9
+ import { createLogger } from '../../shared/index.js';
10
+ const logger = createLogger({ service: 'records-lambda' });
49
11
  /**
50
12
  * updateOne 操作を実行する
51
13
  *
52
14
  * 処理フロー:
53
- * 1. filterまたはidから対象レコードを特定
54
- * 2. レコードが存在しない場合:
55
- * - upsert=falseの場合はエラー
56
- * - upsert=trueの場合は新規作成
57
- * 3. レコードが存在する場合は更新
15
+ * 1. updateMany([id], data)を呼び出す(idまたはfilterから対象を特定)
16
+ * 2. 結果を検証し、失敗した場合は通常のErrorをスロー
17
+ * 3. 成功した場合は { id, ...更新したフィールドのみ } を返却
18
+ *
19
+ * セキュリティ: ADR 001に基づき、更新したフィールドのみを返却
20
+ * - read権限なしでupdate権限のみの場合の情報漏洩を防止
21
+ * - findOneの追加クエリを削減してパフォーマンス向上
58
22
  *
59
23
  * @param resource - リソース名
60
24
  * @param params - updateOneパラメータ
61
25
  * @param requestId - リクエストID
62
- * @returns 更新されたレコード
63
- * @throws {ItemNotFoundError} レコードが存在しない場合(upsert=falseの場合)
26
+ * @returns 更新されたレコード(idと更新したフィールドのみ)
27
+ * @throws {Error} レコードが存在しない場合、または更新に失敗した場合
64
28
  */
65
29
  export async function handleUpdateOne(resource, params, requestId) {
66
30
  const { data: patchData, options } = params;
67
- const upsert = options?.upsert ?? false;
31
+ // updateManyをインポート
32
+ const { handleUpdateMany } = await import('./updateMany.js');
68
33
  // idまたはfilterから対象レコードを特定
69
34
  let targetId;
70
- let existingItem;
71
35
  if ('id' in params) {
72
36
  // idが指定されている場合
73
37
  targetId = params.id;
@@ -75,21 +39,33 @@ export async function handleUpdateOne(resource, params, requestId) {
75
39
  requestId,
76
40
  resource,
77
41
  id: targetId,
78
- upsert,
42
+ upsert: options?.upsert,
79
43
  });
80
- const dbClient = getDBClient();
81
- const tableName = getTableName();
82
- const mainSK = generateMainRecordSK(targetId);
83
- // 既存レコードを取得
84
- const getResult = await executeDynamoDBOperation(() => dbClient.send(new GetCommand({
85
- TableName: tableName,
86
- Key: {
87
- PK: resource,
88
- SK: mainSK,
89
- },
90
- ConsistentRead: true,
91
- })), 'GetItem');
92
- existingItem = getResult.Item;
44
+ // updateMany([id], data)を呼び出す
45
+ const updateManyResult = await handleUpdateMany(resource, {
46
+ ids: [targetId],
47
+ data: patchData,
48
+ }, requestId);
49
+ // 結果を検証
50
+ if (updateManyResult.count === 0) {
51
+ // 更新に失敗した場合
52
+ const error = Object.values(updateManyResult.errors)[0];
53
+ if (error) {
54
+ throw new Error(`Failed to update record: ${error.message}`);
55
+ }
56
+ else {
57
+ throw new Error(`Failed to update record: ${targetId}`);
58
+ }
59
+ }
60
+ // 成功した場合は { id, ...更新したフィールドのみ } を返却
61
+ // UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
62
+ const actualPatchData = patchData.$set
63
+ ? patchData.$set
64
+ : patchData;
65
+ return {
66
+ id: targetId,
67
+ ...actualPatchData,
68
+ };
93
69
  }
94
70
  else {
95
71
  // filterが指定されている場合
@@ -97,213 +73,38 @@ export async function handleUpdateOne(resource, params, requestId) {
97
73
  requestId,
98
74
  resource,
99
75
  filter: params.filter,
100
- upsert,
76
+ upsert: options?.upsert,
101
77
  });
102
- // filterで検索(find操作を使用)
103
- const { handleFind } = await import('./find.js');
104
- const findResult = await handleFind(resource, { filter: params.filter, pagination: { perPage: 1 } }, requestId);
105
- if (findResult.items.length > 0) {
106
- const foundRecord = findResult.items[0];
107
- targetId = foundRecord.id;
108
- // 既存レコードを取得
109
- const dbClient = getDBClient();
110
- const tableName = getTableName();
111
- const mainSK = generateMainRecordSK(targetId);
112
- const getResult = await executeDynamoDBOperation(() => dbClient.send(new GetCommand({
113
- TableName: tableName,
114
- Key: {
115
- PK: resource,
116
- SK: mainSK,
117
- },
118
- ConsistentRead: true,
119
- })), 'GetItem');
120
- existingItem = getResult.Item;
121
- }
122
- else {
123
- // レコードが見つからない場合
124
- if (!upsert) {
125
- throw new ItemNotFoundError(`Record not found with filter`, {
126
- resource,
127
- filter: params.filter,
128
- });
78
+ // updateMany({ filter }, data)を呼び出す
79
+ const updateManyResult = await handleUpdateMany(resource, {
80
+ filter: params.filter,
81
+ data: patchData,
82
+ }, requestId);
83
+ // 結果を検証
84
+ if (updateManyResult.count === 0) {
85
+ // 更新に失敗した場合
86
+ const error = Object.values(updateManyResult.errors)[0];
87
+ if (error) {
88
+ throw new Error(`Failed to update record: ${error.message}`);
89
+ }
90
+ else {
91
+ throw new Error(`No records found matching filter`);
129
92
  }
130
- // upsert=trueの場合、新しいIDを生成
131
- const { ulid } = await import('../../shared/index.js');
132
- targetId = ulid();
133
- }
134
- }
135
- // レコードが存在しない場合の処理
136
- if (!existingItem) {
137
- if (!upsert) {
138
- // upsert=falseの場合はエラー
139
- throw new ItemNotFoundError(`Record not found: ${targetId}`, { resource, id: targetId });
140
93
  }
141
- // upsert=trueの場合は新規作成
142
- return await handleUpsertCreate(resource, targetId, patchData, requestId);
143
- }
144
- // レコードが存在する場合は更新
145
- return await handleUpsertUpdate(resource, targetId, existingItem, patchData, requestId);
146
- }
147
- /**
148
- * upsertで新規作成
149
- *
150
- * 処理フロー:
151
- * 1. $set と $setOnInsert をマージ($set が優先)
152
- * 2. createdAt と updatedAt を自動設定
153
- * 3. シャドーレコードを生成
154
- * 4. TransactWriteItemsでメインレコード + シャドーレコードを一括作成
155
- *
156
- * @param resource - リソース名
157
- * @param id - レコードID
158
- * @param data - レコードデータ(UpdateOperators形式)
159
- * @param requestId - リクエストID
160
- * @returns 作成されたレコード(__upsertedIdフラグ付き)
161
- */
162
- async function handleUpsertCreate(resource, id, data, requestId) {
163
- // UpdateOperators形式の場合、$set と $setOnInsert をマージ
164
- const $set = data.$set || {};
165
- const $setOnInsert = data.$setOnInsert || {};
166
- // $set が $setOnInsert より優先される
167
- const mergedData = {
168
- ...$setOnInsert,
169
- ...$set,
170
- };
171
- // createdAt と updatedAt を自動設定
172
- const recordData = addCreateTimestamps({ ...mergedData, id });
173
- // シャドー設定を取得
174
- const shadowConfig = getShadowConfig();
175
- // シャドウレコードを生成
176
- const shadowRecords = generateShadowRecords(recordData, resource, shadowConfig);
177
- const shadowKeys = shadowRecords.map((shadow) => shadow.SK);
178
- // TransactWriteItemsで一括作成
179
- const transactItems = [];
180
- // メインレコードを作成
181
- transactItems.push({
182
- Put: {
183
- TableName: getTableName(),
184
- Item: {
185
- PK: resource,
186
- SK: generateMainRecordSK(id),
187
- data: {
188
- ...recordData,
189
- __shadowKeys: shadowKeys,
190
- },
191
- },
192
- },
193
- });
194
- // シャドウレコードを作成
195
- for (const shadowRecord of shadowRecords) {
196
- transactItems.push({
197
- Put: {
198
- TableName: getTableName(),
199
- Item: shadowRecord,
200
- },
201
- });
202
- }
203
- // トランザクション実行
204
- await executeDynamoDBOperation(() => getDBClient().send(new TransactWriteCommand({
205
- TransactItems: transactItems,
206
- })), 'TransactWriteItems');
207
- logger.info('updateOne upsert created', {
208
- requestId,
209
- resource,
210
- id,
211
- shadowsCreated: shadowKeys.length,
212
- });
213
- // upsertedIdフラグを付けて返す(クライアント側で変換)
214
- return {
215
- ...removeShadowKeys(recordData),
216
- __upsertedId: id,
217
- };
218
- }
219
- /**
220
- * upsertで更新
221
- *
222
- * 処理フロー:
223
- * 1. UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
224
- * 2. JSON Merge Patchを適用
225
- * 3. updatedAt を更新
226
- * 4. 新しいシャドーSKを生成
227
- * 5. 旧シャドーと新シャドーの差分を計算
228
- * 6. TransactWriteItemsでメインレコード更新 + 旧シャドー削除 + 新シャドー追加
229
- *
230
- * @param resource - リソース名
231
- * @param id - レコードID
232
- * @param existingItem - 既存のDynamoDBアイテム
233
- * @param patchData - パッチデータ(UpdateOperators形式または通常のパッチ)
234
- * @param requestId - リクエストID
235
- * @returns 更新されたレコード
236
- */
237
- async function handleUpsertUpdate(resource, id, existingItem, patchData, requestId) {
238
- const existingData = existingItem.data;
239
- const oldShadowKeys = existingData.__shadowKeys || [];
240
- // UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
241
- const actualPatchData = patchData.$set ? patchData.$set : patchData;
242
- // JSON Merge Patchを適用
243
- const mergedData = applyJsonMergePatch(removeShadowKeys(existingData), actualPatchData);
244
- // updatedAt を更新
245
- const updatedData = addUpdateTimestamp({
246
- ...mergedData,
247
- id, // IDは変更不可
248
- });
249
- // シャドー設定を取得
250
- const shadowConfig = getShadowConfig();
251
- // 新しいシャドーレコードを生成
252
- const newShadowRecords = generateShadowRecords(updatedData, resource, shadowConfig);
253
- const newShadowKeys = newShadowRecords.map((shadow) => shadow.SK);
254
- // シャドー差分を計算
255
- const shadowDiff = calculateShadowDiff(oldShadowKeys, newShadowKeys);
256
- // TransactWriteItemsで一括更新
257
- const transactItems = [];
258
- // メインレコードを更新
259
- transactItems.push({
260
- Put: {
261
- TableName: getTableName(),
262
- Item: {
263
- PK: resource,
264
- SK: generateMainRecordSK(id),
265
- data: {
266
- ...updatedData,
267
- __shadowKeys: newShadowKeys,
268
- },
269
- },
270
- },
271
- });
272
- // 旧シャドーを削除
273
- for (const shadowSK of shadowDiff.toDelete) {
274
- transactItems.push({
275
- Delete: {
276
- TableName: getTableName(),
277
- Key: {
278
- PK: resource,
279
- SK: shadowSK,
280
- },
281
- },
282
- });
283
- }
284
- // 新シャドーを追加
285
- for (const shadowRecord of newShadowRecords) {
286
- if (shadowDiff.toAdd.includes(shadowRecord.SK)) {
287
- transactItems.push({
288
- Put: {
289
- TableName: getTableName(),
290
- Item: shadowRecord,
291
- },
292
- });
94
+ // 成功した場合は更新されたレコードのIDを取得
95
+ const updatedId = Object.values(updateManyResult.successIds)[0];
96
+ if (!updatedId) {
97
+ throw new Error('Failed to get updated record ID');
293
98
  }
99
+ // { id, ...更新したフィールドのみ } を返却
100
+ // UpdateOperators形式の場合、$set のみを抽出($setOnInsert は無視)
101
+ const actualPatchData = patchData.$set
102
+ ? patchData.$set
103
+ : patchData;
104
+ return {
105
+ id: updatedId,
106
+ ...actualPatchData,
107
+ };
294
108
  }
295
- // トランザクション実行
296
- await executeDynamoDBOperation(() => getDBClient().send(new TransactWriteCommand({
297
- TransactItems: transactItems,
298
- })), 'TransactWriteItems');
299
- logger.info('updateOne upsert updated', {
300
- requestId,
301
- resource,
302
- id,
303
- shadowDiffEmpty: isDiffEmpty(shadowDiff),
304
- shadowsDeleted: shadowDiff.toDelete.length,
305
- shadowsAdded: shadowDiff.toAdd.length,
306
- });
307
- return removeShadowKeys(updatedData);
308
109
  }
309
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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"}