@exabugs/dynamodb-client 1.26.0 → 1.27.0

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 (129) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/__generated__/models/apiOperation.d.ts +1 -0
  3. package/dist/__generated__/models/apiOperation.d.ts.map +1 -1
  4. package/dist/__generated__/models/apiOperation.js +1 -0
  5. package/dist/__generated__/models/apiOperation.js.map +1 -1
  6. package/dist/__generated__/models/bulkOperationResult.d.ts +2 -0
  7. package/dist/__generated__/models/bulkOperationResult.d.ts.map +1 -1
  8. package/dist/__generated__/models/countParams.d.ts +31 -0
  9. package/dist/__generated__/models/countParams.d.ts.map +1 -0
  10. package/dist/__generated__/models/countParams.js +2 -0
  11. package/dist/__generated__/models/countParams.js.map +1 -0
  12. package/dist/__generated__/models/countResult.d.ts +37 -0
  13. package/dist/__generated__/models/countResult.d.ts.map +1 -0
  14. package/dist/__generated__/models/countResult.js +2 -0
  15. package/dist/__generated__/models/countResult.js.map +1 -0
  16. package/dist/__generated__/models/countResultConsumedCapacity.d.ts +35 -0
  17. package/dist/__generated__/models/countResultConsumedCapacity.d.ts.map +1 -0
  18. package/dist/__generated__/models/countResultConsumedCapacity.js +25 -0
  19. package/dist/__generated__/models/countResultConsumedCapacity.js.map +1 -0
  20. package/dist/__generated__/models/executeOperationBodyOp.d.ts +1 -0
  21. package/dist/__generated__/models/executeOperationBodyOp.d.ts.map +1 -1
  22. package/dist/__generated__/models/executeOperationBodyOp.js +1 -0
  23. package/dist/__generated__/models/executeOperationBodyOp.js.map +1 -1
  24. package/dist/__generated__/models/index.d.ts +3 -0
  25. package/dist/__generated__/models/index.d.ts.map +1 -1
  26. package/dist/__generated__/models/index.js +3 -0
  27. package/dist/__generated__/models/index.js.map +1 -1
  28. package/dist/client/Collection.d.ts +7 -0
  29. package/dist/client/Collection.d.ts.map +1 -1
  30. package/dist/client/Collection.js +20 -1
  31. package/dist/client/Collection.js.map +1 -1
  32. package/dist/scripts/repair-shadows.js +86 -42
  33. package/dist/scripts/repair-shadows.js.map +1 -1
  34. package/dist/scripts/utils/cliParser.d.ts +9 -22
  35. package/dist/scripts/utils/cliParser.d.ts.map +1 -1
  36. package/dist/scripts/utils/cliParser.js +14 -37
  37. package/dist/scripts/utils/cliParser.js.map +1 -1
  38. package/dist/scripts/utils/shadowAudit.d.ts +49 -0
  39. package/dist/scripts/utils/shadowAudit.d.ts.map +1 -0
  40. package/dist/scripts/utils/shadowAudit.js +84 -0
  41. package/dist/scripts/utils/shadowAudit.js.map +1 -0
  42. package/dist/scripts/utils/shadowRepair.d.ts +42 -0
  43. package/dist/scripts/utils/shadowRepair.d.ts.map +1 -0
  44. package/dist/scripts/utils/shadowRepair.js +110 -0
  45. package/dist/scripts/utils/shadowRepair.js.map +1 -0
  46. package/dist/server/handler.cjs +1005 -901
  47. package/dist/server/handler.cjs.map +4 -4
  48. package/dist/server/handler.js +2 -2
  49. package/dist/server/handler.js.map +1 -1
  50. package/dist/server/media-handler.cjs +2 -2
  51. package/dist/server/media-process-handler-dlq.cjs +19 -3
  52. package/dist/server/media-process-handler-dlq.cjs.map +2 -2
  53. package/dist/server/media-process-handler.cjs +19 -3
  54. package/dist/server/media-process-handler.cjs.map +2 -2
  55. package/dist/server/operations/count.d.ts +3 -0
  56. package/dist/server/operations/count.d.ts.map +1 -0
  57. package/dist/server/operations/count.js +81 -0
  58. package/dist/server/operations/count.js.map +1 -0
  59. package/dist/server/operations/deleteMany.d.ts.map +1 -1
  60. package/dist/server/operations/deleteMany.js +2 -1
  61. package/dist/server/operations/deleteMany.js.map +1 -1
  62. package/dist/server/operations/deleteOne.d.ts.map +1 -1
  63. package/dist/server/operations/deleteOne.js +3 -12
  64. package/dist/server/operations/deleteOne.js.map +1 -1
  65. package/dist/server/operations/find/keyCondition.d.ts +38 -0
  66. package/dist/server/operations/find/keyCondition.d.ts.map +1 -0
  67. package/dist/server/operations/find/keyCondition.js +184 -0
  68. package/dist/server/operations/find/keyCondition.js.map +1 -0
  69. package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
  70. package/dist/server/operations/find/shadowQuery.js +16 -143
  71. package/dist/server/operations/find/shadowQuery.js.map +1 -1
  72. package/dist/server/operations/find/utils.d.ts.map +1 -1
  73. package/dist/server/operations/find/utils.js +0 -5
  74. package/dist/server/operations/find/utils.js.map +1 -1
  75. package/dist/server/operations/insertMany.d.ts.map +1 -1
  76. package/dist/server/operations/insertMany.js +1 -4
  77. package/dist/server/operations/insertMany.js.map +1 -1
  78. package/dist/server/operations/insertOne.d.ts.map +1 -1
  79. package/dist/server/operations/insertOne.js +2 -6
  80. package/dist/server/operations/insertOne.js.map +1 -1
  81. package/dist/server/operations/operationDispatcher.d.ts.map +1 -1
  82. package/dist/server/operations/operationDispatcher.js +3 -0
  83. package/dist/server/operations/operationDispatcher.js.map +1 -1
  84. package/dist/server/operations/updateMany.d.ts.map +1 -1
  85. package/dist/server/operations/updateMany.js +6 -2
  86. package/dist/server/operations/updateMany.js.map +1 -1
  87. package/dist/server/operations/updateOne.d.ts.map +1 -1
  88. package/dist/server/operations/updateOne.js +10 -21
  89. package/dist/server/operations/updateOne.js.map +1 -1
  90. package/dist/server/types.d.ts +7 -1
  91. package/dist/server/types.d.ts.map +1 -1
  92. package/dist/server/utils/bulkError.d.ts +12 -0
  93. package/dist/server/utils/bulkError.d.ts.map +1 -0
  94. package/dist/server/utils/bulkError.js +21 -0
  95. package/dist/server/utils/bulkError.js.map +1 -0
  96. package/dist/server/utils/chunking.d.ts +9 -1
  97. package/dist/server/utils/chunking.d.ts.map +1 -1
  98. package/dist/server/utils/chunking.js +20 -3
  99. package/dist/server/utils/chunking.js.map +1 -1
  100. package/dist/server/utils/filter.d.ts +3 -105
  101. package/dist/server/utils/filter.d.ts.map +1 -1
  102. package/dist/server/utils/filter.js +14 -218
  103. package/dist/server/utils/filter.js.map +1 -1
  104. package/docs/README.md +9 -12
  105. package/package.json +1 -1
  106. package/dist/scripts/operations/bulkRecordRepair.d.ts +0 -17
  107. package/dist/scripts/operations/bulkRecordRepair.d.ts.map +0 -1
  108. package/dist/scripts/operations/bulkRecordRepair.js +0 -76
  109. package/dist/scripts/operations/bulkRecordRepair.js.map +0 -1
  110. package/dist/scripts/operations/singleRecordRepair.d.ts +0 -18
  111. package/dist/scripts/operations/singleRecordRepair.d.ts.map +0 -1
  112. package/dist/scripts/operations/singleRecordRepair.js +0 -46
  113. package/dist/scripts/operations/singleRecordRepair.js.map +0 -1
  114. package/dist/scripts/utils/awsUtils.d.ts +0 -15
  115. package/dist/scripts/utils/awsUtils.d.ts.map +0 -1
  116. package/dist/scripts/utils/awsUtils.js +0 -31
  117. package/dist/scripts/utils/awsUtils.js.map +0 -1
  118. package/dist/scripts/utils/clientFactory.d.ts +0 -22
  119. package/dist/scripts/utils/clientFactory.d.ts.map +0 -1
  120. package/dist/scripts/utils/clientFactory.js +0 -36
  121. package/dist/scripts/utils/clientFactory.js.map +0 -1
  122. package/dist/scripts/utils/repairUtils.d.ts +0 -58
  123. package/dist/scripts/utils/repairUtils.d.ts.map +0 -1
  124. package/dist/scripts/utils/repairUtils.js +0 -52
  125. package/dist/scripts/utils/repairUtils.js.map +0 -1
  126. package/dist/server/utils/ttl.d.ts +0 -17
  127. package/dist/server/utils/ttl.d.ts.map +0 -1
  128. package/dist/server/utils/ttl.js +0 -64
  129. package/dist/server/utils/ttl.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.27.0] - 2026-11-15
11
+
12
+ **挙動が変わる変更**:
13
+
14
+ - `$regex` は 400(`INVALID_FILTER`)になる。これまでは正規表現ではなく部分一致(`$contains` と同じ)として動いていた。使う側は `$contains`・`$starts` に直す(#144。asanowa の管理画面のユーザー選択は直し済み)
15
+ - `updateOne`・`deleteOne`・`insertOne` の「無い」「競合」が、500 ではなく 404(`ITEM_NOT_FOUND`)・409(`VERSION_CONFLICT`)・400(`VALIDATION_ERROR`)になる。POST 以外は 405。ERROR ログ・運用通知には上がらなくなる。例外のメッセージは元のエラーの message になる(#141)
16
+ - クライアントの `findOne` は、404 `ITEM_NOT_FOUND` のとき例外ではなく `null` を返す(型 `TSchema | null` のとおり。#141)
17
+ - cardinality が無い別項目の `$eq` は、そのシャドーから読む。並べ替え項目が空のレコードは、一覧の末尾に出る(これまでは出なかった。#143)
18
+ - `insertMany` は `<RESOURCE>_TTL_DAYS` による `data.ttl` を付けなくなる(効いていなかった。#144)
19
+ - 重複した id を渡した `updateMany`・`deleteMany` は、重複を除いた件数・添字を返す(#144)
20
+
21
+ ### Added
22
+
23
+ - **`count` 操作と `collection.countDocuments(filter)`**(#148)。件数だけを返す。条件なし・キー条件にできる 1 項目の条件はシャドーのキーだけで数え、それ以外は `find` と同じ経路で絞ってから数える。`$near` は 400。**古い Records Lambda に新しいクライアントが `count` を送ると 400 になるので、Lambda を先に更新する**
24
+ - `updateOne` の upsert が、新規作成のときだけ `upsertedId` を返す(#148)
25
+
26
+ ### Changed
27
+
28
+ - 同じ項目の下限・上限(`$gte`+`$lt` など)を 1 つの `SK BETWEEN` にまとめ、cardinality が無くても別項目の `$eq` からシャドーを読む。返す集合は変わらず、読む量が減る。filter-first は、候補の条件も本体で再確認する(#143)
29
+ - キー条件の組み立てを `find/keyCondition.ts` に切り出した(挙動は変わらない)
30
+
31
+ ### Fixed
32
+
33
+ - **`updateMany` の upsert で、`ids` に同じ id が 2 つあり、どちらも無いと、チャンクが失敗していた**。`updateMany`・`deleteMany` は `ids` を最初に重複なしにする(#144)
34
+ - **バルク操作のチャンクが、トランザクションの 4MB の上限を見ていなかった**。レコードの JSON の長さを足し、3.5MB を超えたら分ける(#144)
35
+ - - **`repair-shadows` を作り直した**(#147)。これまでは、食い違いの判定をせず、全レコードに `updatedAt` を書いて更新していた(孤立・本体の無いシャドーは直せず、全レコードの `updatedAt` が変わった)。テーブルを直接読んで 3 種類の食い違いを数え(既定は読み取りだけ)、`--repair` で、食い違いのあるレコードだけ `data`・`updatedAt` を変えずに直す。テーブル名・リージョン・Lambda を必須にした(以前の既定 `ainews-<env>-records`・`us-east-1` は廃止)。ライブラリの利用側の挙動は変わらない(運用スクリプトのみ)
36
+
10
37
  ## [1.26.0] - 2026-11-14
11
38
 
12
39
  **挙動が変わる変更**:
@@ -30,6 +30,7 @@ export declare const ApiOperation: {
30
30
  readonly findOne: "findOne";
31
31
  readonly findMany: "findMany";
32
32
  readonly findManyReference: "findManyReference";
33
+ readonly count: "count";
33
34
  readonly insertOne: "insertOne";
34
35
  readonly insertMany: "insertMany";
35
36
  readonly updateOne: "updateOne";
@@ -1 +1 @@
1
- {"version":3,"file":"apiOperation.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/apiOperation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAG1E,eAAO,MAAM,YAAY;;;;;;;;;;;CAWf,CAAC"}
1
+ {"version":3,"file":"apiOperation.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/apiOperation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAG1E,eAAO,MAAM,YAAY;;;;;;;;;;;;CAYf,CAAC"}
@@ -26,6 +26,7 @@ export const ApiOperation = {
26
26
  findOne: 'findOne',
27
27
  findMany: 'findMany',
28
28
  findManyReference: 'findManyReference',
29
+ count: 'count',
29
30
  insertOne: 'insertOne',
30
31
  insertMany: 'insertMany',
31
32
  updateOne: 'updateOne',
@@ -1 +1 @@
1
- {"version":3,"file":"apiOperation.js","sourceRoot":"","sources":["../../../src/__generated__/models/apiOperation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAChB,CAAC"}
1
+ {"version":3,"file":"apiOperation.js","sourceRoot":"","sources":["../../../src/__generated__/models/apiOperation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;IACtC,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAChB,CAAC"}
@@ -38,6 +38,8 @@ export interface BulkOperationResult {
38
38
  failedIds?: BulkOperationResultFailedIds;
39
39
  /** Map of index to error details */
40
40
  errors?: BulkOperationResultErrors;
41
+ /** updateMany(upsert)で新規作成されたレコードの ID(成功したものだけ。新規作成が無ければ無い) */
42
+ upsertedIds?: string[];
41
43
  /** Successful record data (updateMany returns only updated fields) */
42
44
  items?: BulkOperationResultItemsItem[];
43
45
  /** DynamoDB consumed capacity (aggregated) */
@@ -1 +1 @@
1
- {"version":3,"file":"bulkOperationResult.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/bulkOperationResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,6BAA6B,CAAC;IAC3C,wCAAwC;IACxC,SAAS,CAAC,EAAE,4BAA4B,CAAC;IACzC,oCAAoC;IACpC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,sEAAsE;IACtE,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,mCAAmC,CAAC;CACxD"}
1
+ {"version":3,"file":"bulkOperationResult.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/bulkOperationResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,6BAA6B,CAAC;IAC3C,wCAAwC;IACxC,SAAS,CAAC,EAAE,4BAA4B,CAAC;IACzC,oCAAoC;IACpC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sEAAsE;IACtE,KAAK,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACvC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,mCAAmC,CAAC;CACxD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Generated by orval 🍺
3
+ * Do not edit manually.
4
+ * DynamoDB Client API
5
+ * MongoDB-like API for DynamoDB with shadow record support for efficient querying.
6
+ *
7
+ * This API provides a familiar MongoDB-style interface for interacting with DynamoDB,
8
+ * supporting 10 operations compatible with react-admin.
9
+ *
10
+ * **Supported Operations:**
11
+ * - find: Query documents with filters
12
+ * - findOne: Get a single document
13
+ * - findMany: Get multiple documents by IDs
14
+ * - findManyReference: Get documents by reference field
15
+ * - insertOne: Create a single document
16
+ * - insertMany: Create multiple documents
17
+ * - updateOne: Update a single document
18
+ * - updateMany: Update multiple documents
19
+ * - deleteOne: Delete a single document
20
+ * - deleteMany: Delete multiple documents
21
+ *
22
+ * OpenAPI spec version: 1.3.34
23
+ */
24
+ import type { Filter } from './filter';
25
+ /**
26
+ * Parameters for count operation(シャドーだけを数える。本体は読まない)
27
+ */
28
+ export interface CountParams {
29
+ filter?: Filter;
30
+ }
31
+ //# sourceMappingURL=countParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countParams.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/countParams.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=countParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countParams.js","sourceRoot":"","sources":["../../../src/__generated__/models/countParams.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Generated by orval 🍺
3
+ * Do not edit manually.
4
+ * DynamoDB Client API
5
+ * MongoDB-like API for DynamoDB with shadow record support for efficient querying.
6
+ *
7
+ * This API provides a familiar MongoDB-style interface for interacting with DynamoDB,
8
+ * supporting 10 operations compatible with react-admin.
9
+ *
10
+ * **Supported Operations:**
11
+ * - find: Query documents with filters
12
+ * - findOne: Get a single document
13
+ * - findMany: Get multiple documents by IDs
14
+ * - findManyReference: Get documents by reference field
15
+ * - insertOne: Create a single document
16
+ * - insertMany: Create multiple documents
17
+ * - updateOne: Update a single document
18
+ * - updateMany: Update multiple documents
19
+ * - deleteOne: Delete a single document
20
+ * - deleteMany: Delete multiple documents
21
+ *
22
+ * OpenAPI spec version: 1.3.34
23
+ */
24
+ import type { CountResultConsumedCapacity } from './countResultConsumedCapacity';
25
+ /**
26
+ * count operation result
27
+ */
28
+ export interface CountResult {
29
+ /**
30
+ * 条件に一致するレコードの件数
31
+ * @minimum 0
32
+ */
33
+ count: number;
34
+ /** DynamoDB consumed capacity (aggregated) */
35
+ consumedCapacity?: CountResultConsumedCapacity;
36
+ }
37
+ //# sourceMappingURL=countResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countResult.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/countResult.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;SAGK;IACL,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAChD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=countResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countResult.js","sourceRoot":"","sources":["../../../src/__generated__/models/countResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Generated by orval 🍺
3
+ * Do not edit manually.
4
+ * DynamoDB Client API
5
+ * MongoDB-like API for DynamoDB with shadow record support for efficient querying.
6
+ *
7
+ * This API provides a familiar MongoDB-style interface for interacting with DynamoDB,
8
+ * supporting 10 operations compatible with react-admin.
9
+ *
10
+ * **Supported Operations:**
11
+ * - find: Query documents with filters
12
+ * - findOne: Get a single document
13
+ * - findMany: Get multiple documents by IDs
14
+ * - findManyReference: Get documents by reference field
15
+ * - insertOne: Create a single document
16
+ * - insertMany: Create multiple documents
17
+ * - updateOne: Update a single document
18
+ * - updateMany: Update multiple documents
19
+ * - deleteOne: Delete a single document
20
+ * - deleteMany: Delete multiple documents
21
+ *
22
+ * OpenAPI spec version: 1.3.34
23
+ */
24
+ /**
25
+ * DynamoDB consumed capacity (aggregated)
26
+ */
27
+ export type CountResultConsumedCapacity = {
28
+ /** Total read capacity units */
29
+ totalRCU?: number;
30
+ /** Total write capacity units */
31
+ totalWCU?: number;
32
+ /** Number of DynamoDB operations */
33
+ operationCount?: number;
34
+ };
35
+ //# sourceMappingURL=countResultConsumedCapacity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countResultConsumedCapacity.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/countResultConsumedCapacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Generated by orval 🍺
3
+ * Do not edit manually.
4
+ * DynamoDB Client API
5
+ * MongoDB-like API for DynamoDB with shadow record support for efficient querying.
6
+ *
7
+ * This API provides a familiar MongoDB-style interface for interacting with DynamoDB,
8
+ * supporting 10 operations compatible with react-admin.
9
+ *
10
+ * **Supported Operations:**
11
+ * - find: Query documents with filters
12
+ * - findOne: Get a single document
13
+ * - findMany: Get multiple documents by IDs
14
+ * - findManyReference: Get documents by reference field
15
+ * - insertOne: Create a single document
16
+ * - insertMany: Create multiple documents
17
+ * - updateOne: Update a single document
18
+ * - updateMany: Update multiple documents
19
+ * - deleteOne: Delete a single document
20
+ * - deleteMany: Delete multiple documents
21
+ *
22
+ * OpenAPI spec version: 1.3.34
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=countResultConsumedCapacity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countResultConsumedCapacity.js","sourceRoot":"","sources":["../../../src/__generated__/models/countResultConsumedCapacity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -30,6 +30,7 @@ export declare const ExecuteOperationBodyOp: {
30
30
  readonly findOne: "findOne";
31
31
  readonly findMany: "findMany";
32
32
  readonly findManyReference: "findManyReference";
33
+ readonly count: "count";
33
34
  readonly insertOne: "insertOne";
34
35
  readonly insertMany: "insertMany";
35
36
  readonly updateOne: "updateOne";
@@ -1 +1 @@
1
- {"version":3,"file":"executeOperationBodyOp.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/executeOperationBodyOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAGxG,eAAO,MAAM,sBAAsB;;;;;;;;;;;CAWzB,CAAC"}
1
+ {"version":3,"file":"executeOperationBodyOp.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/executeOperationBodyOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAGxG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;CAYzB,CAAC"}
@@ -26,6 +26,7 @@ export const ExecuteOperationBodyOp = {
26
26
  findOne: 'findOne',
27
27
  findMany: 'findMany',
28
28
  findManyReference: 'findManyReference',
29
+ count: 'count',
29
30
  insertOne: 'insertOne',
30
31
  insertMany: 'insertMany',
31
32
  updateOne: 'updateOne',
@@ -1 +1 @@
1
- {"version":3,"file":"executeOperationBodyOp.js","sourceRoot":"","sources":["../../../src/__generated__/models/executeOperationBodyOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;IACtC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAChB,CAAC"}
1
+ {"version":3,"file":"executeOperationBodyOp.js","sourceRoot":"","sources":["../../../src/__generated__/models/executeOperationBodyOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;IACtC,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAChB,CAAC"}
@@ -36,6 +36,9 @@ export * from './bulkOperationResultItemsItem';
36
36
  export * from './bulkOperationResultSuccessIds';
37
37
  export * from './collection';
38
38
  export * from './consumedCapacity';
39
+ export * from './countParams';
40
+ export * from './countResult';
41
+ export * from './countResultConsumedCapacity';
39
42
  export * from './deleteManyParams';
40
43
  export * from './deleteOneParams';
41
44
  export * from './deleteOneResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__generated__/models/index.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,9 @@ export * from './bulkOperationResultItemsItem';
36
36
  export * from './bulkOperationResultSuccessIds';
37
37
  export * from './collection';
38
38
  export * from './consumedCapacity';
39
+ export * from './countParams';
40
+ export * from './countResult';
41
+ export * from './countResultConsumedCapacity';
39
42
  export * from './deleteManyParams';
40
43
  export * from './deleteOneParams';
41
44
  export * from './deleteOneResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/__generated__/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/__generated__/models/index.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,13 @@ export declare class Collection<TSchema extends ResultBase = ResultBase, TAuthOp
46
46
  private request;
47
47
  find(filter?: Filter<TSchema>, options?: FindOptions): FindCursor<TSchema, TAuthOptions>;
48
48
  findOne(filter: Filter<TSchema>): Promise<TSchema | null>;
49
+ /**
50
+ * 条件に一致するレコードの件数を返す(MongoDB の countDocuments と同じ名前)
51
+ *
52
+ * キー条件にできる条件(1 つの項目の等値・前方一致・範囲、条件なし)は、シャドーだけを数える
53
+ * (本体を読まないので、find(...).toArrayAll().length より速く安い)。
54
+ */
55
+ countDocuments(filter?: Filter<TSchema>): Promise<number>;
49
56
  findMany(ids: string[]): Promise<TSchema[]>;
50
57
  insertOne(document: InputBase & Omit<TSchema, 'id'>): Promise<InsertOneResult>;
51
58
  insertMany(documents: (InputBase & Omit<TSchema, 'id'>)[]): Promise<InsertManyResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
@@ -99,7 +99,16 @@ export class Collection {
99
99
  return new FindCursor(this.endpoint, this.collectionName, filter, options, this.authToken, this.authOptions, this.clientOptions, this.getAuthHeaders);
100
100
  }
101
101
  async findOne(filter) {
102
- const response = await this.request('findOne', { filter });
102
+ let response;
103
+ try {
104
+ response = await this.request('findOne', { filter });
105
+ }
106
+ catch (error) {
107
+ // 対象が無いときは、型(TSchema | null)のとおり null を返す
108
+ if (error.code === 'ITEM_NOT_FOUND')
109
+ return null;
110
+ throw error;
111
+ }
103
112
  // Records Lambda は直接レコードを返す({ document: ... } ではない)
104
113
  // 空オブジェクトの場合はnullを返す
105
114
  if (!response || (typeof response === 'object' && Object.keys(response).length === 0)) {
@@ -107,6 +116,16 @@ export class Collection {
107
116
  }
108
117
  return response;
109
118
  }
119
+ /**
120
+ * 条件に一致するレコードの件数を返す(MongoDB の countDocuments と同じ名前)
121
+ *
122
+ * キー条件にできる条件(1 つの項目の等値・前方一致・範囲、条件なし)は、シャドーだけを数える
123
+ * (本体を読まないので、find(...).toArrayAll().length より速く安い)。
124
+ */
125
+ async countDocuments(filter = {}) {
126
+ const response = await this.request('count', { filter });
127
+ return response.count;
128
+ }
110
129
  async findMany(ids) {
111
130
  const response = await this.request('findMany', { filter: { id: { $in: ids } } });
112
131
  // Records Lambdaは配列を直接返す
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.js","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"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"}
@@ -1,52 +1,96 @@
1
1
  #!/usr/bin/env tsx
2
2
  /**
3
- * シャドーレコード修復スクリプト
3
+ * シャドーの食い違いの確認・修復(運用の道具。アプリのコードから呼ばない)
4
4
  *
5
- * DynamoClient(IAM認証)を使用してレコードを更新し、シャドーレコードを再生成します。
5
+ * テーブルを直接読み、本体とシャドーの食い違いを数える(既定。読み取りだけ)。`--repair` を付けたときだけ、
6
+ * 食い違いのあるレコードを 1 件ずつトランザクションで直す。本体の `data`・`updatedAt` は変えない。
6
7
  *
7
- * 使用方法:
8
- * pnpm --filter @exabugs/dynamodb-client tsx scripts/repair-shadows.ts --resource articles --dry-run
9
- * pnpm --filter @exabugs/dynamodb-client tsx scripts/repair-shadows.ts --resource articles --id C8CD6F0D81B2B030696E300752 --repair
10
- * pnpm --filter @exabugs/dynamodb-client tsx scripts/repair-shadows.ts --resource articles --repair
11
- */
12
- import { repairAllRecords } from './operations/bulkRecordRepair.js';
13
- import { repairSingleRecord } from './operations/singleRecordRepair.js';
14
- import { getRecordsApiUrl } from './utils/awsUtils.js';
15
- import { displayScriptConfig, parseRepairScriptArgs } from './utils/cliParser.js';
16
- import { createDynamoClientCollection } from './utils/clientFactory.js';
17
- // 環境変数
18
- const ENV = process.env.ENV || 'dev';
19
- const REGION = process.env.AWS_REGION || 'us-east-1';
20
- /**
21
- * メイン処理
8
+ * 使い方(テーブル名・リージョン・Lambda は必須。既定を持たない):
9
+ * tsx src/scripts/repair-shadows.ts --table <table> --region <region> --lambda <records-function> --resource articles
10
+ * tsx src/scripts/repair-shadows.ts --table <table> --region <region> --lambda <records-function> --resource articles --repair
11
+ *
12
+ * シャドーの設定(SHADOW_*)は Records の Lambda の環境変数から読む。テーブル名が Lambda の TABLE_NAME と
13
+ * 違えば止める。
22
14
  */
15
+ import { execFileSync } from 'node:child_process';
16
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
17
+ import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
18
+ import { clearShadowConfigCache, getShadowConfig } from '../server/shadow/index.js';
19
+ import { parseRepairScriptArgs } from './utils/cliParser.js';
20
+ import { runShadowRepair } from './utils/shadowRepair.js';
21
+ const SHOWN_KEYS = 5;
22
+ const SHADOW_ENV = [
23
+ 'SHADOW_CREATED_AT_FIELD',
24
+ 'SHADOW_UPDATED_AT_FIELD',
25
+ 'SHADOW_STRING_MAX_BYTES',
26
+ 'SHADOW_NUMBER_PADDING',
27
+ ];
28
+ /** Records の Lambda の環境変数を読む */
29
+ function lambdaEnvironment(config) {
30
+ const out = execFileSync('aws', [
31
+ 'lambda',
32
+ 'get-function-configuration',
33
+ '--function-name',
34
+ config.lambda,
35
+ '--region',
36
+ config.region,
37
+ '--query',
38
+ 'Environment.Variables',
39
+ '--output',
40
+ 'json',
41
+ ], { encoding: 'utf-8' });
42
+ return JSON.parse(out) ?? {};
43
+ }
44
+ function head(keys) {
45
+ const shown = keys.slice(0, SHOWN_KEYS).join('\n ');
46
+ return keys.length > SHOWN_KEYS
47
+ ? `${shown}\n …(ほか ${keys.length - SHOWN_KEYS} 件)`
48
+ : shown;
49
+ }
23
50
  async function main() {
24
- try {
25
- // コマンドライン引数を解析
26
- const config = parseRepairScriptArgs(process.argv.slice(2));
27
- // Records Lambda Function URLを取得
28
- const apiUrl = await getRecordsApiUrl(ENV, REGION);
29
- // 設定を表示
30
- displayScriptConfig(config, apiUrl);
31
- // DynamoClient(IAM認証)を作成
32
- const { client, collection } = await createDynamoClientCollection(apiUrl, REGION, config.resource);
33
- try {
34
- // 修復処理を実行
35
- if (config.recordId) {
36
- await repairSingleRecord(collection, config.recordId, !config.repair);
37
- }
38
- else {
39
- await repairAllRecords(collection, !config.repair);
40
- }
41
- }
42
- finally {
43
- // クライアントを閉じる
44
- await client.close();
45
- }
51
+ const config = parseRepairScriptArgs(process.argv.slice(2));
52
+ const env = lambdaEnvironment(config);
53
+ if (env.TABLE_NAME !== config.table) {
54
+ throw new Error(`--table (${config.table}) が Lambda の TABLE_NAME (${env.TABLE_NAME}) と違う`);
55
+ }
56
+ // Lambda と同じ値でシャドーを作る(キャッシュ前に環境変数へ入れる)
57
+ for (const key of SHADOW_ENV) {
58
+ if (env[key] !== undefined)
59
+ process.env[key] = env[key];
60
+ else
61
+ delete process.env[key];
62
+ }
63
+ clearShadowConfigCache();
64
+ const shadowConfig = getShadowConfig();
65
+ console.log(`Table: ${config.table}(${config.region})`);
66
+ console.log(`Resource: ${config.resource}`);
67
+ console.log(`Lambda: ${config.lambda}`);
68
+ console.log(`Shadow config: ${JSON.stringify(shadowConfig)}`);
69
+ console.log(`Mode: ${config.repair ? 'REPAIR' : 'CHECK(読み取りだけ)'}`);
70
+ const doc = DynamoDBDocumentClient.from(new DynamoDBClient({ region: config.region }));
71
+ const { audit, outcome } = await runShadowRepair({
72
+ doc,
73
+ table: config.table,
74
+ resource: config.resource,
75
+ config: shadowConfig,
76
+ repair: config.repair,
77
+ });
78
+ const orphans = audit.records.flatMap((r) => r.orphans);
79
+ const missing = audit.records.flatMap((r) => r.missing);
80
+ console.log(`\n本体 ${audit.bodies} 件、シャドー ${audit.shadows} 件`);
81
+ console.log(`孤立(一覧に無い実在): ${orphans.length}\n ${head(orphans)}`);
82
+ console.log(`欠け(あるべきが無い): ${missing.length}\n ${head(missing)}`);
83
+ console.log(`一覧の食い違い: ${audit.records.filter((r) => r.listMismatch).length}`);
84
+ console.log(`本体の無いシャドー: ${audit.bodyless.flatMap((b) => b.shadows).length}`);
85
+ if (outcome) {
86
+ console.log(`\n修復: ${outcome.repaired} 件`);
87
+ for (const { id, reason } of outcome.skipped)
88
+ console.log(` 飛ばした: ${id}: ${reason}`);
89
+ if (outcome.skipped.length > 0)
90
+ console.log('飛ばした分は、もう一度実行すると直る。');
46
91
  }
47
- catch (error) {
48
- console.error('Fatal error:', error);
49
- process.exit(1);
92
+ else if (audit.records.length + audit.bodyless.length > 0) {
93
+ console.log('\n直すには --repair を付けて再実行する。');
50
94
  }
51
95
  }
52
96
  main().catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"repair-shadows.js","sourceRoot":"","sources":["../../src/scripts/repair-shadows.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO;AACP,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC;AACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,CAAC;AAErD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,eAAe;QACf,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEnD,QAAQ;QACR,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEpC,yBAAyB;QACzB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,4BAA4B,CAC/D,MAAM,EACN,MAAM,EACN,MAAM,CAAC,QAAQ,CAChB,CAAC;QAEF,IAAI,CAAC;YACH,UAAU;YACV,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,MAAM,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,aAAa;YACb,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"repair-shadows.js","sourceRoot":"","sources":["../../src/scripts/repair-shadows.ts"],"names":[],"mappings":"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"}