@exabugs/dynamodb-client 0.8.1 → 0.9.1
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 +40 -0
- package/dist/client/Collection.d.ts +6 -2
- package/dist/client/Collection.d.ts.map +1 -1
- package/dist/client/Collection.js +9 -7
- package/dist/client/Collection.js.map +1 -1
- package/dist/server/handler.cjs +99 -19
- package/dist/server/handler.cjs.map +3 -3
- package/dist/server/operations/find/utils.d.ts +1 -4
- package/dist/server/operations/find/utils.d.ts.map +1 -1
- package/dist/server/operations/find/utils.js +35 -6
- package/dist/server/operations/find/utils.js.map +1 -1
- package/dist/server/operations/updateOne.d.ts +5 -6
- package/dist/server/operations/updateOne.d.ts.map +1 -1
- package/dist/server/operations/updateOne.js +110 -21
- package/dist/server/operations/updateOne.js.map +1 -1
- package/dist/server/types.d.ts +10 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/utils/filter.d.ts +1 -1
- package/dist/server/utils/filter.d.ts.map +1 -1
- package/dist/server/utils/filter.js +14 -1
- package/dist/server/utils/filter.js.map +1 -1
- package/dist/shared/types/index.d.ts +14 -0
- package/dist/shared/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.1] - 2024-12-30
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Filter Operator Support**: Added support for `in`, `nin`, `contains`, and `exists` operators
|
|
15
|
+
- Updated `FilterOperator` type to include all supported operators
|
|
16
|
+
- Enhanced `parseFilters` function to support nested object filter syntax: `{ id: { in: [...] } }`
|
|
17
|
+
- Added `contains` and `exists` operator handling in `matchesAllFilters` function
|
|
18
|
+
- Fixed react-admin integration: `getMany` operation now works correctly with `in` operator
|
|
19
|
+
- Backward compatible: Both filter syntaxes are supported (`"id:in"` and `{ id: { in: [...] } }`)
|
|
20
|
+
|
|
21
|
+
## [0.9.0] - 2024-12-29
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **Upsert Option for updateOne/updateMany**: MongoDB-compatible upsert functionality
|
|
26
|
+
- Added `UpdateOneOptions` and `UpdateManyOptions` types with `upsert` boolean option
|
|
27
|
+
- Added `upsertedId` field to `UpdateResult` type (set when a new document is created via upsert)
|
|
28
|
+
- Server-side implementation: `handleUpsertCreate` and `handleUpsertUpdate` functions
|
|
29
|
+
- Client-side implementation: Third parameter (options) for `updateOne` and `updateMany` methods
|
|
30
|
+
- Automatic timestamp management: `createdAt` and `updatedAt` are automatically set on upsert
|
|
31
|
+
- Automatic shadow record generation: Shadow records are created/updated during upsert operations
|
|
32
|
+
- Comprehensive test coverage: Unit tests and integration tests for upsert functionality
|
|
33
|
+
- Complete documentation: API reference, usage examples, and migration guide in `docs/API.md`
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **API Enhancement**: `updateOne` and `updateMany` methods now accept an optional third parameter for options
|
|
38
|
+
- Backward compatible: Existing code continues to work without changes
|
|
39
|
+
- Default behavior unchanged: `upsert` defaults to `false`
|
|
40
|
+
|
|
41
|
+
### Documentation
|
|
42
|
+
|
|
43
|
+
- **API Reference**: Updated `docs/API.md` with detailed upsert option documentation
|
|
44
|
+
- Added UpdateOneOptions and UpdateManyOptions type definitions
|
|
45
|
+
- Added UpdateResult.upsertedId field explanation
|
|
46
|
+
- Added practical usage examples for upsert operations
|
|
47
|
+
- Added migration guide from v0.3.x to v0.4.x
|
|
48
|
+
- Added FAQ section for common upsert questions
|
|
49
|
+
|
|
10
50
|
## [0.8.1] - 2025-12-28
|
|
11
51
|
|
|
12
52
|
### Fixed
|
|
@@ -49,8 +49,12 @@ export declare class Collection<TSchema extends ResultBase = ResultBase, TAuthOp
|
|
|
49
49
|
findMany(ids: string[]): Promise<TSchema[]>;
|
|
50
50
|
insertOne(document: InputBase & Omit<TSchema, 'id'>): Promise<InsertOneResult>;
|
|
51
51
|
insertMany(documents: (InputBase & Omit<TSchema, 'id'>)[]): Promise<InsertManyResult>;
|
|
52
|
-
updateOne(filter: Filter<TSchema>, update: UpdateOperators<TSchema
|
|
53
|
-
|
|
52
|
+
updateOne(filter: Filter<TSchema>, update: UpdateOperators<TSchema>, options?: {
|
|
53
|
+
upsert?: boolean;
|
|
54
|
+
}): Promise<UpdateResult>;
|
|
55
|
+
updateMany(filter: Filter<TSchema>, update: UpdateOperators<TSchema>, options?: {
|
|
56
|
+
upsert?: boolean;
|
|
57
|
+
}): Promise<UpdateResult>;
|
|
54
58
|
deleteOne(filter: Filter<TSchema>): Promise<DeleteResult>;
|
|
55
59
|
deleteMany(filter: Filter<TSchema>): Promise<DeleteResult>;
|
|
56
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,GAAG,OAAO,IAAI,CACtD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,YAAY,KACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,YAAY,GAAG,OAAO;IAEnF,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;gBALd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,YAAY,GAAG,SAAS,EACrC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,cAAc,EAAE,iBAAiB,CAAC,YAAY,CAAC;IAGzD,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIrB,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,cAAc,IAAI,YAAY,GAAG,SAAS;IAI1C;;OAEG;YACW,OAAO;IAuDrB,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAO,CAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;IAatF,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAUzD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAU3C,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAS9E,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBrF,SAAS,CACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../src/client/Collection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,YAAY,GAAG,OAAO,IAAI,CACtD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,YAAY,KACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,YAAY,GAAG,OAAO;IAEnF,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,cAAc;gBALd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,YAAY,GAAG,SAAS,EACrC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,cAAc,EAAE,iBAAiB,CAAC,YAAY,CAAC;IAGzD,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIrB,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,cAAc,IAAI,YAAY,GAAG,SAAS;IAI1C;;OAEG;YACW,OAAO;IAuDrB,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAO,CAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;IAatF,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAUzD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAU3C,SAAS,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAS9E,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBrF,SAAS,CACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,YAAY,CAAC;IAoBlB,UAAU,CACd,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EACvB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,YAAY,CAAC;IAkBlB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IASzD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;CAUjE"}
|
|
@@ -129,18 +129,20 @@ export class Collection {
|
|
|
129
129
|
errors: result.errors,
|
|
130
130
|
};
|
|
131
131
|
}
|
|
132
|
-
async updateOne(filter, update) {
|
|
133
|
-
const response = await this.request('updateOne', { filter, update });
|
|
132
|
+
async updateOne(filter, update, options) {
|
|
133
|
+
const response = await this.request('updateOne', { filter, update, options });
|
|
134
134
|
const result = response;
|
|
135
|
+
// __upsertedIdフラグをupsertedIdに変換
|
|
136
|
+
const upsertedId = result.__upsertedId || result.upsertedId;
|
|
135
137
|
return {
|
|
136
138
|
acknowledged: true,
|
|
137
|
-
matchedCount:
|
|
138
|
-
modifiedCount:
|
|
139
|
-
upsertedId
|
|
139
|
+
matchedCount: upsertedId ? 0 : 1, // upsertで新規作成の場合は0
|
|
140
|
+
modifiedCount: upsertedId ? 0 : 1, // upsertで新規作成の場合は0
|
|
141
|
+
upsertedId,
|
|
140
142
|
};
|
|
141
143
|
}
|
|
142
|
-
async updateMany(filter, update) {
|
|
143
|
-
const response = await this.request('updateMany', { filter, update });
|
|
144
|
+
async updateMany(filter, update, options) {
|
|
145
|
+
const response = await this.request('updateMany', { filter, update, options });
|
|
144
146
|
// Records Lambdaは統一形式 { count, successIds, failedIds, errors } を返す
|
|
145
147
|
// MongoDB互換形式に変換
|
|
146
148
|
const result = response;
|
|
@@ -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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"}
|
package/dist/server/handler.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @exabugs/dynamodb-client v0.
|
|
2
|
-
// Built: 2025-12-
|
|
1
|
+
// @exabugs/dynamodb-client v0.9.1
|
|
2
|
+
// Built: 2025-12-30T00:20:04.089Z
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -29707,7 +29707,20 @@ function parseFilterField(fieldKey) {
|
|
|
29707
29707
|
}
|
|
29708
29708
|
__name(parseFilterField, "parseFilterField");
|
|
29709
29709
|
function isValidOperator(operator) {
|
|
29710
|
-
return [
|
|
29710
|
+
return [
|
|
29711
|
+
"eq",
|
|
29712
|
+
"ne",
|
|
29713
|
+
"lt",
|
|
29714
|
+
"lte",
|
|
29715
|
+
"gt",
|
|
29716
|
+
"gte",
|
|
29717
|
+
"in",
|
|
29718
|
+
"nin",
|
|
29719
|
+
"starts",
|
|
29720
|
+
"ends",
|
|
29721
|
+
"contains",
|
|
29722
|
+
"exists"
|
|
29723
|
+
].includes(operator);
|
|
29711
29724
|
}
|
|
29712
29725
|
__name(isValidOperator, "isValidOperator");
|
|
29713
29726
|
function isValidType(type) {
|
|
@@ -29742,8 +29755,15 @@ function parseFilters(filter) {
|
|
|
29742
29755
|
}
|
|
29743
29756
|
for (const [fieldKey, value] of Object.entries(filter)) {
|
|
29744
29757
|
try {
|
|
29745
|
-
|
|
29746
|
-
|
|
29758
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
29759
|
+
for (const [operator, operatorValue] of Object.entries(value)) {
|
|
29760
|
+
const parsed = parseFilterField(`${fieldKey}:${operator}`);
|
|
29761
|
+
parsedFilters.push({ parsed, value: operatorValue });
|
|
29762
|
+
}
|
|
29763
|
+
} else {
|
|
29764
|
+
const parsed = parseFilterField(fieldKey);
|
|
29765
|
+
parsedFilters.push({ parsed, value });
|
|
29766
|
+
}
|
|
29747
29767
|
} catch (error2) {
|
|
29748
29768
|
logger7.error("Invalid filter field syntax", {
|
|
29749
29769
|
fieldKey,
|
|
@@ -29759,9 +29779,7 @@ function parseFilters(filter) {
|
|
|
29759
29779
|
}
|
|
29760
29780
|
__name(parseFilters, "parseFilters");
|
|
29761
29781
|
function findOptimizableFilter(sortField, parsedFilters) {
|
|
29762
|
-
return parsedFilters.find(
|
|
29763
|
-
(filter) => filter.parsed.field === sortField
|
|
29764
|
-
);
|
|
29782
|
+
return parsedFilters.find((filter) => filter.parsed.field === sortField);
|
|
29765
29783
|
}
|
|
29766
29784
|
__name(findOptimizableFilter, "findOptimizableFilter");
|
|
29767
29785
|
function matchesAllFilters(record, parsedFilters) {
|
|
@@ -29788,6 +29806,12 @@ function matchesAllFilters(record, parsedFilters) {
|
|
|
29788
29806
|
return Array.isArray(filterValue) && !filterValue.includes(recordValue);
|
|
29789
29807
|
case "starts":
|
|
29790
29808
|
return typeof recordValue === "string" && typeof filterValue === "string" && recordValue.startsWith(filterValue);
|
|
29809
|
+
case "ends":
|
|
29810
|
+
return typeof recordValue === "string" && typeof filterValue === "string" && recordValue.endsWith(filterValue);
|
|
29811
|
+
case "contains":
|
|
29812
|
+
return typeof recordValue === "string" && typeof filterValue === "string" && recordValue.includes(filterValue);
|
|
29813
|
+
case "exists":
|
|
29814
|
+
return filterValue ? recordValue !== void 0 && recordValue !== null : recordValue === void 0 || recordValue === null;
|
|
29791
29815
|
default:
|
|
29792
29816
|
return true;
|
|
29793
29817
|
}
|
|
@@ -31063,11 +31087,13 @@ function applyJsonMergePatch2(target, patch) {
|
|
|
31063
31087
|
}
|
|
31064
31088
|
__name(applyJsonMergePatch2, "applyJsonMergePatch");
|
|
31065
31089
|
async function handleUpdateOne(resource, params, requestId) {
|
|
31066
|
-
const { id, data: patchData } = params;
|
|
31090
|
+
const { id, data: patchData, options } = params;
|
|
31091
|
+
const upsert = options?.upsert ?? false;
|
|
31067
31092
|
logger18.debug("Executing updateOne", {
|
|
31068
31093
|
requestId,
|
|
31069
31094
|
resource,
|
|
31070
|
-
id
|
|
31095
|
+
id,
|
|
31096
|
+
upsert
|
|
31071
31097
|
});
|
|
31072
31098
|
const dbClient2 = getDBClient();
|
|
31073
31099
|
const tableName = getTableName();
|
|
@@ -31086,9 +31112,63 @@ async function handleUpdateOne(resource, params, requestId) {
|
|
|
31086
31112
|
"GetItem"
|
|
31087
31113
|
);
|
|
31088
31114
|
if (!getResult.Item) {
|
|
31089
|
-
|
|
31115
|
+
if (!upsert) {
|
|
31116
|
+
throw new ItemNotFoundError(`Record not found: ${id}`, { resource, id });
|
|
31117
|
+
}
|
|
31118
|
+
return await handleUpsertCreate(resource, id, patchData, requestId);
|
|
31090
31119
|
}
|
|
31091
|
-
|
|
31120
|
+
return await handleUpsertUpdate(resource, id, getResult.Item, patchData, requestId);
|
|
31121
|
+
}
|
|
31122
|
+
__name(handleUpdateOne, "handleUpdateOne");
|
|
31123
|
+
async function handleUpsertCreate(resource, id, data2, requestId) {
|
|
31124
|
+
const recordData = addCreateTimestamps({ ...data2, id });
|
|
31125
|
+
const shadowConfig = getShadowConfig();
|
|
31126
|
+
const shadowRecords = generateShadowRecords(recordData, resource, shadowConfig);
|
|
31127
|
+
const shadowKeys = shadowRecords.map((shadow) => shadow.SK);
|
|
31128
|
+
const transactItems = [];
|
|
31129
|
+
transactItems.push({
|
|
31130
|
+
Put: {
|
|
31131
|
+
TableName: getTableName(),
|
|
31132
|
+
Item: {
|
|
31133
|
+
PK: resource,
|
|
31134
|
+
SK: generateMainRecordSK2(id),
|
|
31135
|
+
data: {
|
|
31136
|
+
...recordData,
|
|
31137
|
+
__shadowKeys: shadowKeys
|
|
31138
|
+
}
|
|
31139
|
+
}
|
|
31140
|
+
}
|
|
31141
|
+
});
|
|
31142
|
+
for (const shadowRecord of shadowRecords) {
|
|
31143
|
+
transactItems.push({
|
|
31144
|
+
Put: {
|
|
31145
|
+
TableName: getTableName(),
|
|
31146
|
+
Item: shadowRecord
|
|
31147
|
+
}
|
|
31148
|
+
});
|
|
31149
|
+
}
|
|
31150
|
+
await executeDynamoDBOperation(
|
|
31151
|
+
() => getDBClient().send(
|
|
31152
|
+
new import_lib_dynamodb12.TransactWriteCommand({
|
|
31153
|
+
TransactItems: transactItems
|
|
31154
|
+
})
|
|
31155
|
+
),
|
|
31156
|
+
"TransactWriteItems"
|
|
31157
|
+
);
|
|
31158
|
+
logger18.info("updateOne upsert created", {
|
|
31159
|
+
requestId,
|
|
31160
|
+
resource,
|
|
31161
|
+
id,
|
|
31162
|
+
shadowsCreated: shadowKeys.length
|
|
31163
|
+
});
|
|
31164
|
+
return {
|
|
31165
|
+
...removeShadowKeys(recordData),
|
|
31166
|
+
__upsertedId: id
|
|
31167
|
+
};
|
|
31168
|
+
}
|
|
31169
|
+
__name(handleUpsertCreate, "handleUpsertCreate");
|
|
31170
|
+
async function handleUpsertUpdate(resource, id, existingItem, patchData, requestId) {
|
|
31171
|
+
const existingData = existingItem.data;
|
|
31092
31172
|
const oldShadowKeys = existingData.__shadowKeys || [];
|
|
31093
31173
|
const mergedData = applyJsonMergePatch2(removeShadowKeys(existingData), patchData);
|
|
31094
31174
|
const updatedData = addUpdateTimestamp({
|
|
@@ -31103,10 +31183,10 @@ async function handleUpdateOne(resource, params, requestId) {
|
|
|
31103
31183
|
const transactItems = [];
|
|
31104
31184
|
transactItems.push({
|
|
31105
31185
|
Put: {
|
|
31106
|
-
TableName:
|
|
31186
|
+
TableName: getTableName(),
|
|
31107
31187
|
Item: {
|
|
31108
31188
|
PK: resource,
|
|
31109
|
-
SK:
|
|
31189
|
+
SK: generateMainRecordSK2(id),
|
|
31110
31190
|
data: {
|
|
31111
31191
|
...updatedData,
|
|
31112
31192
|
__shadowKeys: newShadowKeys
|
|
@@ -31117,7 +31197,7 @@ async function handleUpdateOne(resource, params, requestId) {
|
|
|
31117
31197
|
for (const shadowSK of shadowDiff.toDelete) {
|
|
31118
31198
|
transactItems.push({
|
|
31119
31199
|
Delete: {
|
|
31120
|
-
TableName:
|
|
31200
|
+
TableName: getTableName(),
|
|
31121
31201
|
Key: {
|
|
31122
31202
|
PK: resource,
|
|
31123
31203
|
SK: shadowSK
|
|
@@ -31129,21 +31209,21 @@ async function handleUpdateOne(resource, params, requestId) {
|
|
|
31129
31209
|
if (shadowDiff.toAdd.includes(shadowRecord.SK)) {
|
|
31130
31210
|
transactItems.push({
|
|
31131
31211
|
Put: {
|
|
31132
|
-
TableName:
|
|
31212
|
+
TableName: getTableName(),
|
|
31133
31213
|
Item: shadowRecord
|
|
31134
31214
|
}
|
|
31135
31215
|
});
|
|
31136
31216
|
}
|
|
31137
31217
|
}
|
|
31138
31218
|
await executeDynamoDBOperation(
|
|
31139
|
-
() =>
|
|
31219
|
+
() => getDBClient().send(
|
|
31140
31220
|
new import_lib_dynamodb12.TransactWriteCommand({
|
|
31141
31221
|
TransactItems: transactItems
|
|
31142
31222
|
})
|
|
31143
31223
|
),
|
|
31144
31224
|
"TransactWriteItems"
|
|
31145
31225
|
);
|
|
31146
|
-
logger18.info("updateOne
|
|
31226
|
+
logger18.info("updateOne upsert updated", {
|
|
31147
31227
|
requestId,
|
|
31148
31228
|
resource,
|
|
31149
31229
|
id,
|
|
@@ -31153,7 +31233,7 @@ async function handleUpdateOne(resource, params, requestId) {
|
|
|
31153
31233
|
});
|
|
31154
31234
|
return removeShadowKeys(updatedData);
|
|
31155
31235
|
}
|
|
31156
|
-
__name(
|
|
31236
|
+
__name(handleUpsertUpdate, "handleUpsertUpdate");
|
|
31157
31237
|
|
|
31158
31238
|
// src/server/operations/parameterConverter.ts
|
|
31159
31239
|
function convertFindParams(mongoParams) {
|