@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.
- package/CHANGELOG.md +27 -0
- package/dist/__generated__/models/apiOperation.d.ts +1 -0
- package/dist/__generated__/models/apiOperation.d.ts.map +1 -1
- package/dist/__generated__/models/apiOperation.js +1 -0
- package/dist/__generated__/models/apiOperation.js.map +1 -1
- package/dist/__generated__/models/bulkOperationResult.d.ts +2 -0
- package/dist/__generated__/models/bulkOperationResult.d.ts.map +1 -1
- package/dist/__generated__/models/countParams.d.ts +31 -0
- package/dist/__generated__/models/countParams.d.ts.map +1 -0
- package/dist/__generated__/models/countParams.js +2 -0
- package/dist/__generated__/models/countParams.js.map +1 -0
- package/dist/__generated__/models/countResult.d.ts +37 -0
- package/dist/__generated__/models/countResult.d.ts.map +1 -0
- package/dist/__generated__/models/countResult.js +2 -0
- package/dist/__generated__/models/countResult.js.map +1 -0
- package/dist/__generated__/models/countResultConsumedCapacity.d.ts +35 -0
- package/dist/__generated__/models/countResultConsumedCapacity.d.ts.map +1 -0
- package/dist/__generated__/models/countResultConsumedCapacity.js +25 -0
- package/dist/__generated__/models/countResultConsumedCapacity.js.map +1 -0
- package/dist/__generated__/models/executeOperationBodyOp.d.ts +1 -0
- package/dist/__generated__/models/executeOperationBodyOp.d.ts.map +1 -1
- package/dist/__generated__/models/executeOperationBodyOp.js +1 -0
- package/dist/__generated__/models/executeOperationBodyOp.js.map +1 -1
- package/dist/__generated__/models/index.d.ts +3 -0
- package/dist/__generated__/models/index.d.ts.map +1 -1
- package/dist/__generated__/models/index.js +3 -0
- package/dist/__generated__/models/index.js.map +1 -1
- package/dist/client/Collection.d.ts +7 -0
- package/dist/client/Collection.d.ts.map +1 -1
- package/dist/client/Collection.js +20 -1
- package/dist/client/Collection.js.map +1 -1
- package/dist/scripts/repair-shadows.js +86 -42
- package/dist/scripts/repair-shadows.js.map +1 -1
- package/dist/scripts/utils/cliParser.d.ts +9 -22
- package/dist/scripts/utils/cliParser.d.ts.map +1 -1
- package/dist/scripts/utils/cliParser.js +14 -37
- package/dist/scripts/utils/cliParser.js.map +1 -1
- package/dist/scripts/utils/shadowAudit.d.ts +49 -0
- package/dist/scripts/utils/shadowAudit.d.ts.map +1 -0
- package/dist/scripts/utils/shadowAudit.js +84 -0
- package/dist/scripts/utils/shadowAudit.js.map +1 -0
- package/dist/scripts/utils/shadowRepair.d.ts +42 -0
- package/dist/scripts/utils/shadowRepair.d.ts.map +1 -0
- package/dist/scripts/utils/shadowRepair.js +110 -0
- package/dist/scripts/utils/shadowRepair.js.map +1 -0
- package/dist/server/handler.cjs +1005 -901
- package/dist/server/handler.cjs.map +4 -4
- package/dist/server/handler.js +2 -2
- package/dist/server/handler.js.map +1 -1
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +19 -3
- package/dist/server/media-process-handler-dlq.cjs.map +2 -2
- package/dist/server/media-process-handler.cjs +19 -3
- package/dist/server/media-process-handler.cjs.map +2 -2
- package/dist/server/operations/count.d.ts +3 -0
- package/dist/server/operations/count.d.ts.map +1 -0
- package/dist/server/operations/count.js +81 -0
- package/dist/server/operations/count.js.map +1 -0
- package/dist/server/operations/deleteMany.d.ts.map +1 -1
- package/dist/server/operations/deleteMany.js +2 -1
- package/dist/server/operations/deleteMany.js.map +1 -1
- package/dist/server/operations/deleteOne.d.ts.map +1 -1
- package/dist/server/operations/deleteOne.js +3 -12
- package/dist/server/operations/deleteOne.js.map +1 -1
- package/dist/server/operations/find/keyCondition.d.ts +38 -0
- package/dist/server/operations/find/keyCondition.d.ts.map +1 -0
- package/dist/server/operations/find/keyCondition.js +184 -0
- package/dist/server/operations/find/keyCondition.js.map +1 -0
- package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
- package/dist/server/operations/find/shadowQuery.js +16 -143
- package/dist/server/operations/find/shadowQuery.js.map +1 -1
- package/dist/server/operations/find/utils.d.ts.map +1 -1
- package/dist/server/operations/find/utils.js +0 -5
- package/dist/server/operations/find/utils.js.map +1 -1
- package/dist/server/operations/insertMany.d.ts.map +1 -1
- package/dist/server/operations/insertMany.js +1 -4
- package/dist/server/operations/insertMany.js.map +1 -1
- package/dist/server/operations/insertOne.d.ts.map +1 -1
- package/dist/server/operations/insertOne.js +2 -6
- package/dist/server/operations/insertOne.js.map +1 -1
- package/dist/server/operations/operationDispatcher.d.ts.map +1 -1
- package/dist/server/operations/operationDispatcher.js +3 -0
- package/dist/server/operations/operationDispatcher.js.map +1 -1
- package/dist/server/operations/updateMany.d.ts.map +1 -1
- package/dist/server/operations/updateMany.js +6 -2
- package/dist/server/operations/updateMany.js.map +1 -1
- package/dist/server/operations/updateOne.d.ts.map +1 -1
- package/dist/server/operations/updateOne.js +10 -21
- package/dist/server/operations/updateOne.js.map +1 -1
- package/dist/server/types.d.ts +7 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/bulkError.d.ts +12 -0
- package/dist/server/utils/bulkError.d.ts.map +1 -0
- package/dist/server/utils/bulkError.js +21 -0
- package/dist/server/utils/bulkError.js.map +1 -0
- package/dist/server/utils/chunking.d.ts +9 -1
- package/dist/server/utils/chunking.d.ts.map +1 -1
- package/dist/server/utils/chunking.js +20 -3
- package/dist/server/utils/chunking.js.map +1 -1
- package/dist/server/utils/filter.d.ts +3 -105
- package/dist/server/utils/filter.d.ts.map +1 -1
- package/dist/server/utils/filter.js +14 -218
- package/dist/server/utils/filter.js.map +1 -1
- package/docs/README.md +9 -12
- package/package.json +1 -1
- package/dist/scripts/operations/bulkRecordRepair.d.ts +0 -17
- package/dist/scripts/operations/bulkRecordRepair.d.ts.map +0 -1
- package/dist/scripts/operations/bulkRecordRepair.js +0 -76
- package/dist/scripts/operations/bulkRecordRepair.js.map +0 -1
- package/dist/scripts/operations/singleRecordRepair.d.ts +0 -18
- package/dist/scripts/operations/singleRecordRepair.d.ts.map +0 -1
- package/dist/scripts/operations/singleRecordRepair.js +0 -46
- package/dist/scripts/operations/singleRecordRepair.js.map +0 -1
- package/dist/scripts/utils/awsUtils.d.ts +0 -15
- package/dist/scripts/utils/awsUtils.d.ts.map +0 -1
- package/dist/scripts/utils/awsUtils.js +0 -31
- package/dist/scripts/utils/awsUtils.js.map +0 -1
- package/dist/scripts/utils/clientFactory.d.ts +0 -22
- package/dist/scripts/utils/clientFactory.d.ts.map +0 -1
- package/dist/scripts/utils/clientFactory.js +0 -36
- package/dist/scripts/utils/clientFactory.js.map +0 -1
- package/dist/scripts/utils/repairUtils.d.ts +0 -58
- package/dist/scripts/utils/repairUtils.d.ts.map +0 -1
- package/dist/scripts/utils/repairUtils.js +0 -52
- package/dist/scripts/utils/repairUtils.js.map +0 -1
- package/dist/server/utils/ttl.d.ts +0 -17
- package/dist/server/utils/ttl.d.ts.map +0 -1
- package/dist/server/utils/ttl.js +0 -64
- package/dist/server/utils/ttl.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../src/server/operations/count.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkE5D,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* count 操作
|
|
3
|
+
*
|
|
4
|
+
* 条件に一致するレコードの件数を返す。キー条件にできる条件は、シャドーだけを数える
|
|
5
|
+
* (Query に Select: 'COUNT' を付ける。本体は読まない)。
|
|
6
|
+
*
|
|
7
|
+
* 数え方:
|
|
8
|
+
* - 条件なし: 本体(`id#…`)の件数
|
|
9
|
+
* - 1 つの項目への $eq・$starts・範囲($gt・$gte・$lt・$lte。同じ項目の下限と上限の組を含む)で、
|
|
10
|
+
* 符号化で情報が落ちない値(exact): find と同じキー条件でシャドーを数える
|
|
11
|
+
* - それ以外(2 項目以上、キー条件にできない演算子、広めになる値): find と同じ経路で絞ってから数える
|
|
12
|
+
* (正しさを優先する。件数だけのために本体を読むので遅いが、find と一致する)
|
|
13
|
+
*/
|
|
14
|
+
import { QueryCommand } from '@aws-sdk/lib-dynamodb';
|
|
15
|
+
import { InvalidFilterError } from '../../shared/errors/index.js';
|
|
16
|
+
import { CostTracker } from '../utils/cost-tracker.js';
|
|
17
|
+
import { executeDynamoDBOperation, getDBClient, getTableName } from '../utils/dynamodb.js';
|
|
18
|
+
import { KEY_CONDITION_OPERATORS, buildKeyCondition, encodeValueForShadowSK, findComplementaryBound, } from './find/keyCondition.js';
|
|
19
|
+
import { detectNearQuery, parseFilters } from './find/utils.js';
|
|
20
|
+
import { findAllByFilter } from './findAll.js';
|
|
21
|
+
/** キー条件だけで数えられる条件か(1 つの項目で、値の符号化に曖昧さが無い) */
|
|
22
|
+
function planKeyCountFilters(parsedFilters) {
|
|
23
|
+
const [first] = parsedFilters;
|
|
24
|
+
if (!first || first.parsed.field === 'id')
|
|
25
|
+
return undefined;
|
|
26
|
+
if (!KEY_CONDITION_OPERATORS.has(first.parsed.operator))
|
|
27
|
+
return undefined;
|
|
28
|
+
const second = parsedFilters.length === 2 ? findComplementaryBound(first, parsedFilters) : undefined;
|
|
29
|
+
if (parsedFilters.length > 1 && !second)
|
|
30
|
+
return undefined;
|
|
31
|
+
if (parsedFilters.length > 2)
|
|
32
|
+
return undefined;
|
|
33
|
+
const planned = second ? [first, second] : [first];
|
|
34
|
+
const allExact = planned.every((f) => encodeValueForShadowSK(f.value, f.parsed.type, f.parsed.operator).exact);
|
|
35
|
+
return allExact ? { first, second } : undefined;
|
|
36
|
+
}
|
|
37
|
+
/** キー条件の Query を、LastEvaluatedKey が無くなるまで繰り返して件数を足す */
|
|
38
|
+
async function countByKeyCondition(keyConditionExpression, expressionAttributeValues, costTracker) {
|
|
39
|
+
const dbClient = getDBClient();
|
|
40
|
+
const tableName = getTableName();
|
|
41
|
+
let total = 0;
|
|
42
|
+
let exclusiveStartKey;
|
|
43
|
+
do {
|
|
44
|
+
const result = await executeDynamoDBOperation(() => dbClient.send(new QueryCommand({
|
|
45
|
+
TableName: tableName,
|
|
46
|
+
KeyConditionExpression: keyConditionExpression,
|
|
47
|
+
ExpressionAttributeValues: expressionAttributeValues,
|
|
48
|
+
Select: 'COUNT',
|
|
49
|
+
ExclusiveStartKey: exclusiveStartKey,
|
|
50
|
+
ConsistentRead: true,
|
|
51
|
+
ReturnConsumedCapacity: 'TOTAL',
|
|
52
|
+
})), 'Query');
|
|
53
|
+
costTracker.add(result.ConsumedCapacity);
|
|
54
|
+
total += result.Count ?? 0;
|
|
55
|
+
exclusiveStartKey = result.LastEvaluatedKey;
|
|
56
|
+
} while (exclusiveStartKey);
|
|
57
|
+
return total;
|
|
58
|
+
}
|
|
59
|
+
export async function handleCount(resource, params, requestId) {
|
|
60
|
+
const filter = (params.filter ?? {});
|
|
61
|
+
if (detectNearQuery(filter)) {
|
|
62
|
+
throw new InvalidFilterError('count does not support $near', { filter });
|
|
63
|
+
}
|
|
64
|
+
const parsedFilters = parseFilters(filter);
|
|
65
|
+
const costTracker = new CostTracker();
|
|
66
|
+
// 条件なし: 本体(id#…)の件数
|
|
67
|
+
if (parsedFilters.length === 0) {
|
|
68
|
+
const count = await countByKeyCondition('PK = :pk AND begins_with(SK, :skPrefix)', { ':pk': resource, ':skPrefix': 'id#' }, costTracker);
|
|
69
|
+
return { count, consumedCapacity: costTracker.getAggregated() };
|
|
70
|
+
}
|
|
71
|
+
const plan = planKeyCountFilters(parsedFilters);
|
|
72
|
+
if (plan) {
|
|
73
|
+
const { keyConditionExpression, expressionAttributeValues } = buildKeyCondition(resource, plan.first.parsed.field, plan.first, plan.second);
|
|
74
|
+
const count = await countByKeyCondition(keyConditionExpression, expressionAttributeValues, costTracker);
|
|
75
|
+
return { count, consumedCapacity: costTracker.getAggregated() };
|
|
76
|
+
}
|
|
77
|
+
// 正しさを優先する経路: find と同じ読み方で絞ってから数える
|
|
78
|
+
const items = await findAllByFilter(resource, filter, requestId);
|
|
79
|
+
return { count: items.length };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=count.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../src/server/operations/count.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../src/server/operations/deleteMany.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAkCtF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../src/server/operations/deleteMany.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAkCtF;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAuV3B"}
|
|
@@ -41,7 +41,8 @@ export async function handleDeleteMany(resource, params, requestId) {
|
|
|
41
41
|
let condition;
|
|
42
42
|
if ('ids' in params) {
|
|
43
43
|
// idsが指定されている場合
|
|
44
|
-
|
|
44
|
+
// 重複 id は 1 つにする(同じ項目への操作が 1 トランザクションに 2 つ入るのを防ぐ)
|
|
45
|
+
ids = [...new Set(params.ids)];
|
|
45
46
|
condition = params.condition;
|
|
46
47
|
logger.debug('Executing deleteMany with ids', {
|
|
47
48
|
requestId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../src/server/operations/deleteMany.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAkB3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,MAAwB,EACxB,SAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEtC,+BAA+B;IAC/B,IAAI,GAAa,CAAC;IAClB,uCAAuC;IACvC,IAAI,SAA8C,CAAC;IAEnD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACpB,gBAAgB;QAChB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../src/server/operations/deleteMany.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../../../src/server/operations/deleteOne.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../../../src/server/operations/deleteOne.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMpE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA4F1B"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* リファクタリング: deleteManyを内部で使用
|
|
8
8
|
*/
|
|
9
9
|
import { createLogger } from '../../shared/index.js';
|
|
10
|
+
import { toAppError } from '../utils/bulkError.js';
|
|
10
11
|
import { findOneByFilter } from './findAll.js';
|
|
11
12
|
const logger = createLogger({ service: 'records-lambda' });
|
|
12
13
|
/**
|
|
@@ -45,12 +46,7 @@ export async function handleDeleteOne(resource, params, requestId) {
|
|
|
45
46
|
if (deleteManyResult.count === 0) {
|
|
46
47
|
// 削除に失敗した場合
|
|
47
48
|
const error = Object.values(deleteManyResult.errors || {})[0];
|
|
48
|
-
|
|
49
|
-
throw new Error(`Failed to delete record: ${error.message}`);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
throw new Error(`Failed to delete record: ${targetId}`);
|
|
53
|
-
}
|
|
49
|
+
throw toAppError(error, `Failed to delete record: ${targetId}`);
|
|
54
50
|
}
|
|
55
51
|
// 既存のインターフェースを維持: { id } を返す
|
|
56
52
|
return {
|
|
@@ -79,12 +75,7 @@ export async function handleDeleteOne(resource, params, requestId) {
|
|
|
79
75
|
if (deleteManyResult.count === 0) {
|
|
80
76
|
// 削除に失敗した場合
|
|
81
77
|
const error = Object.values(deleteManyResult.errors || {})[0];
|
|
82
|
-
|
|
83
|
-
throw new Error(`Failed to delete record: ${error.message}`);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
throw new Error(`No records found matching filter`);
|
|
87
|
-
}
|
|
78
|
+
throw toAppError(error ?? { code: 'ITEM_NOT_FOUND' }, 'No records found matching filter');
|
|
88
79
|
}
|
|
89
80
|
// 成功した場合は削除されたレコードのIDを取得
|
|
90
81
|
const deletedId = Object.values(deleteManyResult.successIds || {})[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOne.js","sourceRoot":"","sources":["../../../src/server/operations/deleteOne.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,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,mBAAmB;IACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7D,yBAAyB;IACzB,IAAI,QAA4B,CAAC;IAEjC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,eAAe;QACf,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAErB,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,SAAS;YACT,QAAQ;YACR,EAAE,EAAE,QAAQ;SACb,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,QAAQ,EACR;YACE,GAAG,EAAE,CAAC,QAAQ,CAAC;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,EACD,SAAS,CACV,CAAC;QAEF,QAAQ;QACR,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACjC,YAAY;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,
|
|
1
|
+
{"version":3,"file":"deleteOne.js","sourceRoot":"","sources":["../../../src/server/operations/deleteOne.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { OptimizableFilter, ParsedFilter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* DynamoDBのKeyConditionExpressionで実際に絞り込める演算子
|
|
4
|
+
*
|
|
5
|
+
* buildKeyCondition()のswitch文で個別実装されている演算子のみ。
|
|
6
|
+
* これ以外($contains, $ends, $ne, $in, $nin, $exists等)は
|
|
7
|
+
* begins_with(SK, sortField#)による全件プレフィックスマッチにフォールバックし、
|
|
8
|
+
* DB側では一切絞り込まれない(メモリ内フィルタでのみ判定される)。
|
|
9
|
+
*/
|
|
10
|
+
export declare const KEY_CONDITION_OPERATORS: Set<string>;
|
|
11
|
+
/**
|
|
12
|
+
* KeyConditionExpressionを構築する
|
|
13
|
+
*
|
|
14
|
+
* @param resource - リソース名
|
|
15
|
+
* @param sortField - ソートフィールド
|
|
16
|
+
* @param optimizableFilter - 最適化可能なフィルター
|
|
17
|
+
* @returns KeyConditionExpressionと属性値
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildKeyCondition(resource: string, sortField: string, optimizableFilter: OptimizableFilter | undefined, secondFilter?: OptimizableFilter): {
|
|
20
|
+
keyConditionExpression: string;
|
|
21
|
+
expressionAttributeValues: Record<string, unknown>;
|
|
22
|
+
};
|
|
23
|
+
/** 同じ項目の、反対側の範囲条件(下限に対する上限、上限に対する下限)を探す */
|
|
24
|
+
export declare function findComplementaryBound(primary: OptimizableFilter, parsedFilters: ParsedFilter[]): OptimizableFilter | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* 検索の値を、書き込み側(generateShadowRecords)と同じ形に符号化する
|
|
27
|
+
*
|
|
28
|
+
* 書き込み側と別の実装にしない(数値のオフセット・文字列の切り詰め・日時の正規化がずれると、
|
|
29
|
+
* 一致するはずのシャドーに当たらず、結果が黙って空になる)。
|
|
30
|
+
*
|
|
31
|
+
* @returns encoded: 符号化した値。exact: 符号化で情報が落ちていないか
|
|
32
|
+
* (false = 数値の小数の切り捨て、文字列の切り詰め。同じ符号になる別の値がありうる)
|
|
33
|
+
*/
|
|
34
|
+
export declare function encodeValueForShadowSK(value: unknown, type: string | undefined, operator: string): {
|
|
35
|
+
encoded: string;
|
|
36
|
+
exact: boolean;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=keyCondition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyCondition.d.ts","sourceRoot":"","sources":["../../../../src/server/operations/find/keyCondition.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,aAA4D,CAAC;AAEjG;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,EAChD,YAAY,CAAC,EAAE,iBAAiB,GAC/B;IACD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpD,CAwFA;AA6BD,2CAA2C;AAC3C,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,YAAY,EAAE,GAC5B,iBAAiB,GAAG,SAAS,CAW/B;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CA2BrC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* シャドーの KeyConditionExpression の組み立て
|
|
3
|
+
*
|
|
4
|
+
* find(ページを読む)と count(件数だけ数える)が同じキー条件を使うため、ここに 1 つだけ置く。
|
|
5
|
+
*/
|
|
6
|
+
import { escapeString, formatFieldValue, getShadowConfig, inferFieldType, } from '../../shadow/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* DynamoDBのKeyConditionExpressionで実際に絞り込める演算子
|
|
9
|
+
*
|
|
10
|
+
* buildKeyCondition()のswitch文で個別実装されている演算子のみ。
|
|
11
|
+
* これ以外($contains, $ends, $ne, $in, $nin, $exists等)は
|
|
12
|
+
* begins_with(SK, sortField#)による全件プレフィックスマッチにフォールバックし、
|
|
13
|
+
* DB側では一切絞り込まれない(メモリ内フィルタでのみ判定される)。
|
|
14
|
+
*/
|
|
15
|
+
export const KEY_CONDITION_OPERATORS = new Set(['$eq', '$gt', '$gte', '$lt', '$lte', '$starts']);
|
|
16
|
+
/**
|
|
17
|
+
* KeyConditionExpressionを構築する
|
|
18
|
+
*
|
|
19
|
+
* @param resource - リソース名
|
|
20
|
+
* @param sortField - ソートフィールド
|
|
21
|
+
* @param optimizableFilter - 最適化可能なフィルター
|
|
22
|
+
* @returns KeyConditionExpressionと属性値
|
|
23
|
+
*/
|
|
24
|
+
export function buildKeyCondition(resource, sortField, optimizableFilter, secondFilter) {
|
|
25
|
+
const expressionAttributeValues = {
|
|
26
|
+
':pk': resource,
|
|
27
|
+
};
|
|
28
|
+
if (!optimizableFilter) {
|
|
29
|
+
// 最適化なし: プレフィックスマッチ
|
|
30
|
+
return {
|
|
31
|
+
keyConditionExpression: 'PK = :pk AND begins_with(SK, :skPrefix)',
|
|
32
|
+
expressionAttributeValues: {
|
|
33
|
+
...expressionAttributeValues,
|
|
34
|
+
':skPrefix': `${sortField}#`,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// 両側の範囲(下限 + 上限)は 1 つの BETWEEN にする
|
|
39
|
+
if (secondFilter) {
|
|
40
|
+
const first = rangeBounds(sortField, optimizableFilter);
|
|
41
|
+
const second = rangeBounds(sortField, secondFilter);
|
|
42
|
+
const low = first.low ?? second.low;
|
|
43
|
+
const high = first.high ?? second.high;
|
|
44
|
+
if (low !== undefined && high !== undefined) {
|
|
45
|
+
return rangeCondition(expressionAttributeValues, low, high);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// 最適化あり: フィルター条件をKeyConditionExpressionに含める
|
|
49
|
+
const { operator, type } = optimizableFilter.parsed;
|
|
50
|
+
const value = optimizableFilter.value;
|
|
51
|
+
// 値を、書き込み側と同じ形に符号化する
|
|
52
|
+
const { encoded, exact } = encodeValueForShadowSK(value, type, operator);
|
|
53
|
+
const skValue = `${sortField}#${encoded}`;
|
|
54
|
+
// 符号化で情報が落ちたとき(exact = false)は、同じ符号になる値をすべて読み、メモリの絞り込みに任せる
|
|
55
|
+
const afterValue = `${skValue}#id#~`; // この値のシャドーすべてより後ろ
|
|
56
|
+
const beforeValue = `${skValue}#id#`; // この値のシャドーすべてより前
|
|
57
|
+
switch (operator) {
|
|
58
|
+
case '$eq':
|
|
59
|
+
return {
|
|
60
|
+
keyConditionExpression: 'PK = :pk AND begins_with(SK, :skValue)',
|
|
61
|
+
expressionAttributeValues: {
|
|
62
|
+
...expressionAttributeValues,
|
|
63
|
+
':skValue': beforeValue,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
// 範囲検索は SK BETWEEN の 1 条件にする。
|
|
67
|
+
// - DynamoDB はソートキーに 1 つの条件しか許さない(begins_with と比較を並べると ValidationException)
|
|
68
|
+
// - 上限・下限を sortField の範囲に閉じないと、他の項目のシャドー(や本体 id#…)まで読む
|
|
69
|
+
// BETWEEN は両端を含むが、端の値(`…#id#`、`…#id#~`、`{sortField}$`)と一致する SK は実在しない
|
|
70
|
+
case '$gt':
|
|
71
|
+
return rangeCondition(expressionAttributeValues, exact ? afterValue : beforeValue, fieldUpperBound(sortField));
|
|
72
|
+
case '$gte':
|
|
73
|
+
return rangeCondition(expressionAttributeValues, beforeValue, fieldUpperBound(sortField));
|
|
74
|
+
case '$lt':
|
|
75
|
+
return rangeCondition(expressionAttributeValues, `${sortField}#`, exact ? beforeValue : afterValue);
|
|
76
|
+
case '$lte':
|
|
77
|
+
return rangeCondition(expressionAttributeValues, `${sortField}#`, afterValue);
|
|
78
|
+
case '$starts':
|
|
79
|
+
// プレフィックスマッチ: begins_with(SK, '{sortField}#{prefix}')
|
|
80
|
+
// 例: typeDate: { $starts: 'day:2026-03-14:' }
|
|
81
|
+
// → begins_with(SK, 'typeDate#day:2026-03-14:')
|
|
82
|
+
return {
|
|
83
|
+
keyConditionExpression: 'PK = :pk AND begins_with(SK, :skValue)',
|
|
84
|
+
expressionAttributeValues: {
|
|
85
|
+
...expressionAttributeValues,
|
|
86
|
+
':skValue': skValue,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
default:
|
|
90
|
+
// 未対応の演算子の場合はプレフィックスマッチにフォールバック
|
|
91
|
+
return {
|
|
92
|
+
keyConditionExpression: 'PK = :pk AND begins_with(SK, :skPrefix)',
|
|
93
|
+
expressionAttributeValues: {
|
|
94
|
+
...expressionAttributeValues,
|
|
95
|
+
':skPrefix': `${sortField}#`,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const LOWER_BOUND_OPERATORS = new Set(['$gt', '$gte']);
|
|
101
|
+
const UPPER_BOUND_OPERATORS = new Set(['$lt', '$lte']);
|
|
102
|
+
/** 範囲演算子の、SK の下限・上限(`buildKeyCondition` の単独の範囲と同じ値) */
|
|
103
|
+
function rangeBounds(sortField, filter) {
|
|
104
|
+
const { operator, type } = filter.parsed;
|
|
105
|
+
const { encoded, exact } = encodeValueForShadowSK(filter.value, type, operator);
|
|
106
|
+
const skValue = `${sortField}#${encoded}`;
|
|
107
|
+
const afterValue = `${skValue}#id#~`;
|
|
108
|
+
const beforeValue = `${skValue}#id#`;
|
|
109
|
+
switch (operator) {
|
|
110
|
+
case '$gt':
|
|
111
|
+
return { low: exact ? afterValue : beforeValue };
|
|
112
|
+
case '$gte':
|
|
113
|
+
return { low: beforeValue };
|
|
114
|
+
case '$lt':
|
|
115
|
+
return { high: exact ? beforeValue : afterValue };
|
|
116
|
+
case '$lte':
|
|
117
|
+
return { high: afterValue };
|
|
118
|
+
default:
|
|
119
|
+
return {};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** 同じ項目の、反対側の範囲条件(下限に対する上限、上限に対する下限)を探す */
|
|
123
|
+
export function findComplementaryBound(primary, parsedFilters) {
|
|
124
|
+
const op = primary.parsed.operator;
|
|
125
|
+
const wanted = LOWER_BOUND_OPERATORS.has(op)
|
|
126
|
+
? UPPER_BOUND_OPERATORS
|
|
127
|
+
: UPPER_BOUND_OPERATORS.has(op)
|
|
128
|
+
? LOWER_BOUND_OPERATORS
|
|
129
|
+
: undefined;
|
|
130
|
+
if (!wanted)
|
|
131
|
+
return undefined;
|
|
132
|
+
return parsedFilters.find((f) => f !== primary && f.parsed.field === primary.parsed.field && wanted.has(f.parsed.operator));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* sortField のシャドーの SK(`{sortField}#…`)すべてより大きい、最小の文字列
|
|
136
|
+
*
|
|
137
|
+
* '$'(0x24)は '#'(0x23)の次の文字。`{sortField}#` で始まる SK は、どれも `{sortField}$` より小さい。
|
|
138
|
+
*/
|
|
139
|
+
function fieldUpperBound(sortField) {
|
|
140
|
+
return `${sortField}$`;
|
|
141
|
+
}
|
|
142
|
+
/** `PK = :pk AND SK BETWEEN :skLow AND :skHigh` を組み立てる */
|
|
143
|
+
function rangeCondition(base, low, high) {
|
|
144
|
+
return {
|
|
145
|
+
keyConditionExpression: 'PK = :pk AND SK BETWEEN :skLow AND :skHigh',
|
|
146
|
+
expressionAttributeValues: { ...base, ':skLow': low, ':skHigh': high },
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 検索の値を、書き込み側(generateShadowRecords)と同じ形に符号化する
|
|
151
|
+
*
|
|
152
|
+
* 書き込み側と別の実装にしない(数値のオフセット・文字列の切り詰め・日時の正規化がずれると、
|
|
153
|
+
* 一致するはずのシャドーに当たらず、結果が黙って空になる)。
|
|
154
|
+
*
|
|
155
|
+
* @returns encoded: 符号化した値。exact: 符号化で情報が落ちていないか
|
|
156
|
+
* (false = 数値の小数の切り捨て、文字列の切り詰め。同じ符号になる別の値がありうる)
|
|
157
|
+
*/
|
|
158
|
+
export function encodeValueForShadowSK(value, type, operator) {
|
|
159
|
+
const config = getShadowConfig();
|
|
160
|
+
if (type === 'number' || typeof value === 'number') {
|
|
161
|
+
const num = Number(value);
|
|
162
|
+
// シャドーは小数を切り捨てる。整数 2 の検索でも、保存された 2.5 が同じ符号になるので、常に exact = false
|
|
163
|
+
return { encoded: formatFieldValue('number', num, config), exact: false };
|
|
164
|
+
}
|
|
165
|
+
if (type === 'boolean' || typeof value === 'boolean') {
|
|
166
|
+
const bool = typeof value === 'boolean' ? value : String(value).toLowerCase() === 'true';
|
|
167
|
+
return { encoded: formatFieldValue('boolean', bool, config), exact: true };
|
|
168
|
+
}
|
|
169
|
+
const str = String(value);
|
|
170
|
+
// 日時は、書き込み側と同じ推定で ISO 8601(UTC)に正規化する。
|
|
171
|
+
// 前方一致($starts)は途中までの指定がありうるので、正規化しない
|
|
172
|
+
if (operator !== '$starts' && (type === 'date' || inferFieldType(str) === 'datetime')) {
|
|
173
|
+
return { encoded: formatFieldValue('datetime', str, config), exact: true };
|
|
174
|
+
}
|
|
175
|
+
const encoded = formatFieldValue('string', str, config);
|
|
176
|
+
// 切り詰めの境界(UTF-8 の 1 文字は最大 4 バイト)に届く長さの値は、
|
|
177
|
+
// 切り詰められた保存値と同じ符号になりうる
|
|
178
|
+
const bytes = new TextEncoder().encode(str).length;
|
|
179
|
+
return {
|
|
180
|
+
encoded,
|
|
181
|
+
exact: encoded === escapeString(str) && bytes < config.stringMaxBytes - 3,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=keyCondition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyCondition.js","sourceRoot":"","sources":["../../../../src/server/operations/find/keyCondition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowQuery.d.ts","sourceRoot":"","sources":["../../../../src/server/operations/find/shadowQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shadowQuery.d.ts","sourceRoot":"","sources":["../../../../src/server/operations/find/shadowQuery.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAmC,MAAM,YAAY,CAAC;AAQpG;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,oBAAoB,EACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAqJrB;AAiZD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,CAWnF"}
|