qstd 0.3.79 → 0.3.80
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/dist/server/aws/ddb/domain.d.ts +119 -21
- package/dist/server/aws/ddb/domain.d.ts.map +1 -1
- package/dist/server/aws/ddb/fns.d.ts +4 -0
- package/dist/server/aws/ddb/fns.d.ts.map +1 -1
- package/dist/server/aws/ddb/types.d.ts +140 -14
- package/dist/server/aws/ddb/types.d.ts.map +1 -1
- package/dist/server/index.cjs +211 -12
- package/dist/server/index.js +213 -14
- package/package.json +1 -1
|
@@ -95,6 +95,49 @@ export declare const save: <T extends object>(ddb: Client, props: {
|
|
|
95
95
|
tableName?: string;
|
|
96
96
|
item: T;
|
|
97
97
|
}) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput>;
|
|
98
|
+
/**
|
|
99
|
+
* Update a single item with type-safe operations
|
|
100
|
+
*
|
|
101
|
+
* Supports all DynamoDB update operations with a clean, type-safe API.
|
|
102
|
+
* Use this for single-item updates; use `transact` for atomic multi-item updates.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* // All operations with DynamoDB expression comments
|
|
107
|
+
* await update<User>(ddb, {
|
|
108
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
109
|
+
*
|
|
110
|
+
* // Value operations
|
|
111
|
+
* set: { name: 'Alice', status: 'active' }, // SET #name = :name, #status = :status
|
|
112
|
+
* incr: { loginCount: 1, failedAttempts: -1 }, // SET #x = #x + :val (negative to decrement)
|
|
113
|
+
* remove: ['tempToken', 'oldField'], // REMOVE #tempToken, #oldField
|
|
114
|
+
*
|
|
115
|
+
* // List operations
|
|
116
|
+
* append: { tags: ['new-tag'] }, // SET #tags = list_append(#tags, :tags)
|
|
117
|
+
* prepend: { notifications: [latest] }, // SET #notif = list_append(:notif, #notif)
|
|
118
|
+
*
|
|
119
|
+
* // Conditional & atomic operations
|
|
120
|
+
* ifNotExists: { createdAt: Date.now() }, // SET #createdAt = if_not_exists(#createdAt, :val)
|
|
121
|
+
* add: { viewCount: 1 }, // ADD #viewCount :val (atomic, creates if missing)
|
|
122
|
+
*
|
|
123
|
+
* // Advanced operations
|
|
124
|
+
* setPath: { 'address.city': 'NYC' }, // SET #address.#city = :val (nested updates)
|
|
125
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax (cross-attribute)
|
|
126
|
+
*
|
|
127
|
+
* // Conditional execution (ConditionExpression)
|
|
128
|
+
* conditions: [{ key: 'version', op: '=', value: 1 }],
|
|
129
|
+
* });
|
|
130
|
+
*
|
|
131
|
+
* // Get updated item back
|
|
132
|
+
* const result = await update<User>(ddb, {
|
|
133
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
134
|
+
* incr: { views: 1 },
|
|
135
|
+
* returnValues: 'allNew',
|
|
136
|
+
* });
|
|
137
|
+
* console.log(result.Attributes); // Updated item
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function update<T extends object = Record<string, unknown>>(ddb: Client, props: _t.UpdateProps<T>): Promise<import("@aws-sdk/lib-dynamodb").UpdateCommandOutput>;
|
|
98
141
|
/**
|
|
99
142
|
* Batch get multiple items from DynamoDB
|
|
100
143
|
*
|
|
@@ -273,52 +316,107 @@ export declare const tableExists: (ddb: Client, props: {
|
|
|
273
316
|
* - Cannot have multiple operations on the same item
|
|
274
317
|
*
|
|
275
318
|
* @example
|
|
276
|
-
*
|
|
319
|
+
* ```ts
|
|
320
|
+
*
|
|
321
|
+
* // OPTIMISTIC LOCKING - Type-safe conditions (recommended)
|
|
322
|
+
*
|
|
277
323
|
* await transact<User>(ddb, {
|
|
278
324
|
* items: [
|
|
279
325
|
* {
|
|
280
326
|
* put: {
|
|
281
|
-
* item: {
|
|
282
|
-
* conditions: [{ key: 'version', op: '=', value:
|
|
327
|
+
* item: { ...user, version: user.version + 1 },
|
|
328
|
+
* conditions: [{ key: 'version', op: '=', value: user.version }]
|
|
283
329
|
* }
|
|
284
|
-
* }
|
|
330
|
+
* }
|
|
331
|
+
* ]
|
|
332
|
+
* });
|
|
333
|
+
*
|
|
334
|
+
*
|
|
335
|
+
* // PREVENT OVERWRITES - Only create if doesn't exist
|
|
336
|
+
*
|
|
337
|
+
* await transact<User>(ddb, {
|
|
338
|
+
* items: [
|
|
285
339
|
* {
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* conditions: [{ key: '
|
|
340
|
+
* put: {
|
|
341
|
+
* item: newUser,
|
|
342
|
+
* conditions: [{ key: 'pk', op: 'attribute_not_exists' }]
|
|
289
343
|
* }
|
|
290
|
-
* }
|
|
344
|
+
* }
|
|
345
|
+
* ]
|
|
346
|
+
* });
|
|
347
|
+
*
|
|
348
|
+
*
|
|
349
|
+
* // CONDITIONAL DELETE - Only delete if status matches
|
|
350
|
+
*
|
|
351
|
+
* await transact<User>(ddb, {
|
|
352
|
+
* items: [
|
|
291
353
|
* {
|
|
292
|
-
*
|
|
293
|
-
* key: { pk: '
|
|
294
|
-
* conditions: [{ key: '
|
|
354
|
+
* delete: {
|
|
355
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
356
|
+
* conditions: [{ key: 'status', op: '=', value: 'inactive' }]
|
|
295
357
|
* }
|
|
296
358
|
* }
|
|
297
359
|
* ]
|
|
298
360
|
* });
|
|
299
361
|
*
|
|
300
|
-
*
|
|
301
|
-
* // Delete
|
|
362
|
+
*
|
|
363
|
+
* // ATOMIC MULTI-ITEM - Delete media and update group together
|
|
364
|
+
*
|
|
302
365
|
* await transact(ddb, {
|
|
303
366
|
* items: [
|
|
304
367
|
* { delete: { key: { pk: 'media#123', sk: 'media#123' } } },
|
|
305
|
-
* { put: { item: { ...group,
|
|
368
|
+
* { put: { item: { ...group, mediaIds: updatedIds, updatedAt: Date.now() } } },
|
|
306
369
|
* ]
|
|
307
370
|
* });
|
|
308
371
|
*
|
|
309
|
-
*
|
|
310
|
-
* //
|
|
311
|
-
*
|
|
372
|
+
*
|
|
373
|
+
* // CONDITION CHECK - Verify related item exists before writing
|
|
374
|
+
*
|
|
375
|
+
* await transact<User>(ddb, {
|
|
312
376
|
* items: [
|
|
313
377
|
* {
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
378
|
+
* conditionCheck: {
|
|
379
|
+
* key: { pk: 'org#456', sk: 'org#456' },
|
|
380
|
+
* conditions: [{ key: 'pk', op: 'attribute_exists' }]
|
|
381
|
+
* }
|
|
382
|
+
* },
|
|
383
|
+
* { put: { item: { ...user, orgId: 'org#456' } } }
|
|
384
|
+
* ]
|
|
385
|
+
* });
|
|
386
|
+
*
|
|
387
|
+
*
|
|
388
|
+
* // TYPE-SAFE UPDATE - All operations with DynamoDB expression comments
|
|
389
|
+
*
|
|
390
|
+
* await transact<Order>(ddb, {
|
|
391
|
+
* items: [
|
|
392
|
+
* {
|
|
393
|
+
* update: {
|
|
394
|
+
* key: { pk: 'order#123', sk: 'order#123' },
|
|
395
|
+
*
|
|
396
|
+
* // Value operations
|
|
397
|
+
* set: { status: 'shipped', updatedAt: Date.now() }, // SET #status = :status
|
|
398
|
+
* incr: { version: 1, shipmentCount: 1 }, // SET #version = #version + :val
|
|
399
|
+
* remove: ['pendingReason'], // REMOVE #pendingReason
|
|
400
|
+
*
|
|
401
|
+
* // List operations
|
|
402
|
+
* append: { history: ['shipped'] }, // SET #history = list_append(#history, :val)
|
|
403
|
+
* prepend: { alerts: ['urgent'] }, // SET #alerts = list_append(:val, #alerts)
|
|
404
|
+
*
|
|
405
|
+
* // Conditional & atomic operations
|
|
406
|
+
* ifNotExists: { firstShippedAt: Date.now() }, // SET #x = if_not_exists(#x, :val)
|
|
407
|
+
* add: { totalOrders: 1 }, // ADD #totalOrders :val
|
|
408
|
+
*
|
|
409
|
+
* // Advanced operations
|
|
410
|
+
* setPath: { 'shipping.carrier': 'FedEx' }, // SET #shipping.#carrier = :val
|
|
411
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax
|
|
412
|
+
*
|
|
413
|
+
* // Conditional execution
|
|
414
|
+
* conditions: [{ key: 'status', op: '=', value: 'pending' }]
|
|
318
415
|
* }
|
|
319
416
|
* }
|
|
320
417
|
* ]
|
|
321
418
|
* });
|
|
419
|
+
* ```
|
|
322
420
|
*/
|
|
323
421
|
export declare function transact<T extends object = Record<string, unknown>>(ddb: Client, props: {
|
|
324
422
|
tableName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/domain.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,4 +27,8 @@ export declare const backoffDelay: (attempt: number) => number;
|
|
|
27
27
|
* Chunk an array into smaller arrays of specified size
|
|
28
28
|
*/
|
|
29
29
|
export declare const chunk: <T>(arr: T[], size: number) => T[][];
|
|
30
|
+
/**
|
|
31
|
+
* Build UpdateExpression and expression attributes from type-safe update operations
|
|
32
|
+
*/
|
|
33
|
+
export declare const buildUpdateExpression: <T extends object>(ops: _t.UpdateOperations<T>, names: Record<string, string>, values: Record<string, NativeAttributeValue>) => string | undefined;
|
|
30
34
|
//# sourceMappingURL=fns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,WAAW,MAAM,SAmClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,IAAI;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAoD7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,SAAS,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC1C,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBAoE7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,EACzC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EACvB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAQ9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,MAAM,KAAG,CAAC,EAAE,EAIpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,WAAW,MAAM,SAmClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,IAAI;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAoD7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,SAAS,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC1C,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBAoE7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,EACzC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EACvB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAQ9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,MAAM,KAAG,CAAC,EAAE,EAIpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,KAAK,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBA6I7C,CAAC"}
|
|
@@ -216,21 +216,37 @@ export type BatchDeleteResult = {
|
|
|
216
216
|
export type ExprValues = Record<string, unknown>;
|
|
217
217
|
/** Expression attribute names for reserved word escaping */
|
|
218
218
|
export type ExprNames = Record<string, string>;
|
|
219
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Put operation in a transaction
|
|
221
|
+
* @example
|
|
222
|
+
* // Type-safe conditions (recommended)
|
|
223
|
+
* { put: { item: user, conditions: [{ key: 'version', op: '=', value: 1 }] } }
|
|
224
|
+
*
|
|
225
|
+
* // Raw expression (advanced)
|
|
226
|
+
* { put: { item: user, cond: 'attribute_not_exists(pk)' } }
|
|
227
|
+
*/
|
|
220
228
|
export type TransactPut<T extends object = Record<string, unknown>> = {
|
|
221
229
|
put: {
|
|
222
230
|
item: T;
|
|
223
231
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
224
232
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
225
|
-
/** Raw condition expression
|
|
233
|
+
/** Raw condition expression. Use conditions for type-safety. */
|
|
226
234
|
cond?: string;
|
|
227
|
-
/** Expression attribute values for raw cond
|
|
235
|
+
/** Expression attribute values for raw cond */
|
|
228
236
|
exprValues?: ExprValues;
|
|
229
237
|
/** Expression attribute names for raw cond */
|
|
230
238
|
exprNames?: ExprNames;
|
|
231
239
|
};
|
|
232
240
|
};
|
|
233
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Delete operation in a transaction
|
|
243
|
+
* @example
|
|
244
|
+
* // Type-safe conditions (recommended)
|
|
245
|
+
* { delete: { key: { pk, sk }, conditions: [{ key: 'status', op: '=', value: 'inactive' }] } }
|
|
246
|
+
*
|
|
247
|
+
* // Simple delete (no conditions)
|
|
248
|
+
* { delete: { key: { pk, sk } } }
|
|
249
|
+
*/
|
|
234
250
|
export type TransactDelete<T extends object = Record<string, unknown>> = {
|
|
235
251
|
delete: {
|
|
236
252
|
key: Key;
|
|
@@ -244,25 +260,136 @@ export type TransactDelete<T extends object = Record<string, unknown>> = {
|
|
|
244
260
|
exprNames?: ExprNames;
|
|
245
261
|
};
|
|
246
262
|
};
|
|
247
|
-
/**
|
|
263
|
+
/**
|
|
264
|
+
* Type-safe update operations - shared between transact and update functions
|
|
265
|
+
* @example
|
|
266
|
+
* ```ts
|
|
267
|
+
* // Value operations
|
|
268
|
+
* set: { name: 'Alice', status: 'active' } // SET #name = :name, #status = :status
|
|
269
|
+
* incr: { count: 1, views: -5 } // SET #count = #count + :incr (use negative to decrement)
|
|
270
|
+
* remove: ['oldField', 'tempData'] // REMOVE #oldField, #tempData
|
|
271
|
+
*
|
|
272
|
+
* // List operations
|
|
273
|
+
* append: { items: ['new1', 'new2'] } // SET #items = list_append(#items, :items)
|
|
274
|
+
* prepend: { items: ['first'] } // SET #items = list_append(:items, #items)
|
|
275
|
+
*
|
|
276
|
+
* // Conditional & set operations
|
|
277
|
+
* ifNotExists: { field: 'default' } // SET #field = if_not_exists(#field, :field)
|
|
278
|
+
* add: { counter: 5 } // ADD #counter :counter (atomic, creates if missing)
|
|
279
|
+
*
|
|
280
|
+
* // Advanced
|
|
281
|
+
* setPath: { 'address.city': 'NYC' } // SET #address.#city = :val (nested updates)
|
|
282
|
+
* compute: { total: ['price', '+', 'tax'] } // SET #total = #price + #tax (cross-attribute math)
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
export type UpdateOperations<T extends object = Record<string, unknown>> = {
|
|
286
|
+
/** SET: assign values to attributes */
|
|
287
|
+
set?: Partial<T>;
|
|
288
|
+
/** INCREMENT: add to numeric attributes (use negative to decrement) */
|
|
289
|
+
incr?: Partial<Record<keyof T, number>>;
|
|
290
|
+
/** REMOVE: list of attribute names to remove */
|
|
291
|
+
remove?: (keyof T)[];
|
|
292
|
+
/** LIST APPEND: append values to list attributes */
|
|
293
|
+
append?: Partial<Record<keyof T, unknown[]>>;
|
|
294
|
+
/** LIST PREPEND: prepend values to list attributes */
|
|
295
|
+
prepend?: Partial<Record<keyof T, unknown[]>>;
|
|
296
|
+
/** IF NOT EXISTS: set value only if attribute doesn't exist */
|
|
297
|
+
ifNotExists?: Partial<T>;
|
|
298
|
+
/** ADD: atomic add to numeric attributes (creates attribute if missing) */
|
|
299
|
+
add?: Partial<Record<keyof T, number>>;
|
|
300
|
+
/** SET PATH: update nested attributes using dot notation */
|
|
301
|
+
setPath?: Record<string, unknown>;
|
|
302
|
+
/** COMPUTE: cross-attribute math operations */
|
|
303
|
+
compute?: Partial<Record<keyof T, [keyof T, "+" | "-", keyof T]>>;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Update operation in a transaction
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* // All operations can be combined in a single update
|
|
310
|
+
* {
|
|
311
|
+
* update: {
|
|
312
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
313
|
+
*
|
|
314
|
+
* // Value operations
|
|
315
|
+
* set: { name: 'Alice', status: 'active' }, // SET #name = :name, #status = :status
|
|
316
|
+
* incr: { loginCount: 1, failedAttempts: -1 }, // SET #x = #x + :val (negative to decrement)
|
|
317
|
+
* remove: ['tempToken', 'oldField'], // REMOVE #tempToken, #oldField
|
|
318
|
+
*
|
|
319
|
+
* // List operations
|
|
320
|
+
* append: { tags: ['new-tag'] }, // SET #tags = list_append(#tags, :tags)
|
|
321
|
+
* prepend: { notifications: [latest] }, // SET #notif = list_append(:notif, #notif)
|
|
322
|
+
*
|
|
323
|
+
* // Conditional & set operations
|
|
324
|
+
* ifNotExists: { createdAt: Date.now() }, // SET #createdAt = if_not_exists(#createdAt, :val)
|
|
325
|
+
* add: { viewCount: 1 }, // ADD #viewCount :val (atomic, creates if missing)
|
|
326
|
+
*
|
|
327
|
+
* // Advanced operations
|
|
328
|
+
* setPath: { 'address.city': 'NYC' }, // SET #address.#city = :val (nested)
|
|
329
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax
|
|
330
|
+
*
|
|
331
|
+
* // Conditional execution
|
|
332
|
+
* conditions: [{ key: 'version', op: '=', value: 1 }]
|
|
333
|
+
* }
|
|
334
|
+
* }
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
248
337
|
export type TransactUpdate<T extends object = Record<string, unknown>> = {
|
|
249
|
-
update: {
|
|
338
|
+
update: UpdateOperations<T> & {
|
|
250
339
|
key: Key;
|
|
251
|
-
/** Update expression (e.g., 'SET #count = #count + :inc') */
|
|
252
|
-
expr: string;
|
|
253
340
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
254
341
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
255
342
|
/** Raw condition expression. Use conditions for type-safety. */
|
|
256
343
|
cond?: string;
|
|
257
|
-
/** Expression attribute values (for expr and/or cond) */
|
|
258
|
-
exprValues?: ExprValues;
|
|
259
|
-
/** Expression attribute names (for expr and/or cond) */
|
|
260
|
-
exprNames?: ExprNames;
|
|
261
344
|
};
|
|
262
345
|
};
|
|
263
|
-
/**
|
|
346
|
+
/** Return values options for update operations */
|
|
347
|
+
export type UpdateReturnValues = "none" | "allOld" | "updatedOld" | "allNew" | "updatedNew";
|
|
348
|
+
/**
|
|
349
|
+
* Props for standalone update function
|
|
350
|
+
*/
|
|
351
|
+
export type UpdateProps<T extends object = Record<string, unknown>> = {
|
|
352
|
+
/** Table name (optional if set on client) */
|
|
353
|
+
tableName?: string;
|
|
354
|
+
/** Primary key of item to update */
|
|
355
|
+
key: Key;
|
|
356
|
+
/** Type-safe conditions (like filters) */
|
|
357
|
+
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
358
|
+
/** Raw condition expression */
|
|
359
|
+
cond?: string;
|
|
360
|
+
/** What values to return after update */
|
|
361
|
+
returnValues?: UpdateReturnValues;
|
|
362
|
+
/** SET: assign values to attributes */
|
|
363
|
+
set?: Partial<T>;
|
|
364
|
+
/** INCREMENT: add to numeric attributes (use negative to decrement) */
|
|
365
|
+
incr?: Partial<Record<keyof T, number>>;
|
|
366
|
+
/** REMOVE: list of attribute names to remove */
|
|
367
|
+
remove?: (keyof T)[];
|
|
368
|
+
/** LIST APPEND: append values to list attributes */
|
|
369
|
+
append?: Partial<Record<keyof T, unknown[]>>;
|
|
370
|
+
/** LIST PREPEND: prepend values to list attributes */
|
|
371
|
+
prepend?: Partial<Record<keyof T, unknown[]>>;
|
|
372
|
+
/** IF NOT EXISTS: set value only if attribute doesn't exist */
|
|
373
|
+
ifNotExists?: Partial<T>;
|
|
374
|
+
/** ADD: atomic add to numeric attributes (creates attribute if missing) */
|
|
375
|
+
add?: Partial<Record<keyof T, number>>;
|
|
376
|
+
/** SET PATH: update nested attributes using dot notation */
|
|
377
|
+
setPath?: Record<string, unknown>;
|
|
378
|
+
/** COMPUTE: cross-attribute math operations */
|
|
379
|
+
compute?: Partial<Record<keyof T, [keyof T, "+" | "-", keyof T]>>;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* ConditionCheck operation - validates a condition without modifying the item
|
|
383
|
+
* @example
|
|
384
|
+
* // Type-safe conditions (recommended)
|
|
385
|
+
* { conditionCheck: { key: { pk, sk }, conditions: [{ key: 'pk', op: 'attribute_exists' }] } }
|
|
386
|
+
*
|
|
387
|
+
* // Raw expression
|
|
388
|
+
* { conditionCheck: { key: { pk, sk }, cond: 'attribute_exists(pk)' } }
|
|
389
|
+
*/
|
|
264
390
|
export type TransactConditionCheck<T extends object = Record<string, unknown>> = {
|
|
265
391
|
conditionCheck: {
|
|
392
|
+
key: Key;
|
|
266
393
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
267
394
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
268
395
|
/** Raw condition expression. Use conditions for type-safety. */
|
|
@@ -271,7 +398,6 @@ export type TransactConditionCheck<T extends object = Record<string, unknown>> =
|
|
|
271
398
|
exprValues?: ExprValues;
|
|
272
399
|
/** Expression attribute names for raw cond */
|
|
273
400
|
exprNames?: ExprNames;
|
|
274
|
-
key: Key;
|
|
275
401
|
};
|
|
276
402
|
};
|
|
277
403
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/types.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.cjs
CHANGED
|
@@ -1231,7 +1231,8 @@ __export(ddb_exports, {
|
|
|
1231
1231
|
remove: () => remove2,
|
|
1232
1232
|
save: () => save,
|
|
1233
1233
|
tableExists: () => tableExists,
|
|
1234
|
-
transact: () => transact
|
|
1234
|
+
transact: () => transact,
|
|
1235
|
+
update: () => update
|
|
1235
1236
|
});
|
|
1236
1237
|
|
|
1237
1238
|
// src/server/aws/ddb/fns.ts
|
|
@@ -1383,6 +1384,124 @@ var chunk2 = (arr, size) => {
|
|
|
1383
1384
|
(_, i) => arr.slice(i * size, i * size + size)
|
|
1384
1385
|
);
|
|
1385
1386
|
};
|
|
1387
|
+
var buildUpdateExpression = (ops, names, values) => {
|
|
1388
|
+
const setParts = [];
|
|
1389
|
+
const removeParts = [];
|
|
1390
|
+
const addParts = [];
|
|
1391
|
+
let nameIdx = 0;
|
|
1392
|
+
const getName = (key) => {
|
|
1393
|
+
const token = `#u${nameIdx++}`;
|
|
1394
|
+
names[token] = key;
|
|
1395
|
+
return token;
|
|
1396
|
+
};
|
|
1397
|
+
let valIdx = 0;
|
|
1398
|
+
const getValue = (val) => {
|
|
1399
|
+
const token = `:u${valIdx++}`;
|
|
1400
|
+
values[token] = val;
|
|
1401
|
+
return token;
|
|
1402
|
+
};
|
|
1403
|
+
if (ops.set) {
|
|
1404
|
+
for (const [key, val] of Object.entries(
|
|
1405
|
+
ops.set
|
|
1406
|
+
)) {
|
|
1407
|
+
if (val !== void 0) {
|
|
1408
|
+
setParts.push(`${getName(key)} = ${getValue(val)}`);
|
|
1409
|
+
}
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
if (ops.incr) {
|
|
1413
|
+
for (const [key, val] of Object.entries(
|
|
1414
|
+
ops.incr
|
|
1415
|
+
)) {
|
|
1416
|
+
if (val !== void 0) {
|
|
1417
|
+
const nameToken = getName(key);
|
|
1418
|
+
setParts.push(`${nameToken} = ${nameToken} + ${getValue(val)}`);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
if (ops.remove) {
|
|
1423
|
+
for (const key of ops.remove) {
|
|
1424
|
+
removeParts.push(getName(key));
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
if (ops.append) {
|
|
1428
|
+
for (const [key, val] of Object.entries(
|
|
1429
|
+
ops.append
|
|
1430
|
+
)) {
|
|
1431
|
+
if (val !== void 0) {
|
|
1432
|
+
const nameToken = getName(key);
|
|
1433
|
+
setParts.push(
|
|
1434
|
+
`${nameToken} = list_append(${nameToken}, ${getValue(val)})`
|
|
1435
|
+
);
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
if (ops.prepend) {
|
|
1440
|
+
for (const [key, val] of Object.entries(
|
|
1441
|
+
ops.prepend
|
|
1442
|
+
)) {
|
|
1443
|
+
if (val !== void 0) {
|
|
1444
|
+
const nameToken = getName(key);
|
|
1445
|
+
setParts.push(
|
|
1446
|
+
`${nameToken} = list_append(${getValue(val)}, ${nameToken})`
|
|
1447
|
+
);
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
if (ops.ifNotExists) {
|
|
1452
|
+
for (const [key, val] of Object.entries(
|
|
1453
|
+
ops.ifNotExists
|
|
1454
|
+
)) {
|
|
1455
|
+
if (val !== void 0) {
|
|
1456
|
+
const nameToken = getName(key);
|
|
1457
|
+
setParts.push(
|
|
1458
|
+
`${nameToken} = if_not_exists(${nameToken}, ${getValue(val)})`
|
|
1459
|
+
);
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
if (ops.add) {
|
|
1464
|
+
for (const [key, val] of Object.entries(
|
|
1465
|
+
ops.add
|
|
1466
|
+
)) {
|
|
1467
|
+
if (val !== void 0) {
|
|
1468
|
+
addParts.push(`${getName(key)} ${getValue(val)}`);
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
if (ops.setPath) {
|
|
1473
|
+
for (const [path, val] of Object.entries(ops.setPath)) {
|
|
1474
|
+
if (val !== void 0) {
|
|
1475
|
+
const pathParts = path.split(".");
|
|
1476
|
+
const pathTokens = pathParts.map((p) => getName(p));
|
|
1477
|
+
setParts.push(`${pathTokens.join(".")} = ${getValue(val)}`);
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
if (ops.compute) {
|
|
1482
|
+
for (const [key, val] of Object.entries(
|
|
1483
|
+
ops.compute
|
|
1484
|
+
)) {
|
|
1485
|
+
if (val && Array.isArray(val) && val.length === 3) {
|
|
1486
|
+
const [left, op, right] = val;
|
|
1487
|
+
setParts.push(
|
|
1488
|
+
`${getName(key)} = ${getName(left)} ${op} ${getName(right)}`
|
|
1489
|
+
);
|
|
1490
|
+
}
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
const exprParts = [];
|
|
1494
|
+
if (setParts.length > 0) {
|
|
1495
|
+
exprParts.push(`SET ${setParts.join(", ")}`);
|
|
1496
|
+
}
|
|
1497
|
+
if (removeParts.length > 0) {
|
|
1498
|
+
exprParts.push(`REMOVE ${removeParts.join(", ")}`);
|
|
1499
|
+
}
|
|
1500
|
+
if (addParts.length > 0) {
|
|
1501
|
+
exprParts.push(`ADD ${addParts.join(", ")}`);
|
|
1502
|
+
}
|
|
1503
|
+
return exprParts.join(" ") || void 0;
|
|
1504
|
+
};
|
|
1386
1505
|
|
|
1387
1506
|
// src/server/aws/ddb/domain.ts
|
|
1388
1507
|
var create2 = (props) => {
|
|
@@ -1531,6 +1650,66 @@ var save = async (ddb, props) => {
|
|
|
1531
1650
|
});
|
|
1532
1651
|
return ddb.client.send(command);
|
|
1533
1652
|
};
|
|
1653
|
+
var RETURN_VALUES_MAP = {
|
|
1654
|
+
updatedNew: clientDynamodb.ReturnValue.UPDATED_NEW,
|
|
1655
|
+
updatedOld: clientDynamodb.ReturnValue.UPDATED_OLD,
|
|
1656
|
+
allOld: clientDynamodb.ReturnValue.ALL_OLD,
|
|
1657
|
+
allNew: clientDynamodb.ReturnValue.ALL_NEW,
|
|
1658
|
+
none: clientDynamodb.ReturnValue.NONE
|
|
1659
|
+
};
|
|
1660
|
+
async function update(ddb, props) {
|
|
1661
|
+
const TableName = getTableNameOrThrow(
|
|
1662
|
+
props.tableName,
|
|
1663
|
+
ddb.tableName
|
|
1664
|
+
);
|
|
1665
|
+
const names = {};
|
|
1666
|
+
const values = {};
|
|
1667
|
+
const UpdateExpression = buildUpdateExpression(
|
|
1668
|
+
props,
|
|
1669
|
+
names,
|
|
1670
|
+
values
|
|
1671
|
+
);
|
|
1672
|
+
if (!UpdateExpression) {
|
|
1673
|
+
throw new Error(
|
|
1674
|
+
`[ddb] [update] requires at least one operation (set, incr, remove, append, etc.)`
|
|
1675
|
+
);
|
|
1676
|
+
}
|
|
1677
|
+
let ConditionExpression;
|
|
1678
|
+
if (props.conditions || props.cond) {
|
|
1679
|
+
const condNames = {};
|
|
1680
|
+
const condValues = {};
|
|
1681
|
+
if (props.conditions) {
|
|
1682
|
+
ConditionExpression = buildFilterExpression(
|
|
1683
|
+
props.conditions,
|
|
1684
|
+
condNames,
|
|
1685
|
+
condValues
|
|
1686
|
+
);
|
|
1687
|
+
}
|
|
1688
|
+
if (props.cond) {
|
|
1689
|
+
ConditionExpression = ConditionExpression ? `(${ConditionExpression}) AND (${props.cond})` : props.cond;
|
|
1690
|
+
}
|
|
1691
|
+
Object.assign(names, condNames);
|
|
1692
|
+
Object.assign(values, condValues);
|
|
1693
|
+
}
|
|
1694
|
+
const input = {
|
|
1695
|
+
TableName,
|
|
1696
|
+
Key: props.key,
|
|
1697
|
+
UpdateExpression
|
|
1698
|
+
};
|
|
1699
|
+
if (ConditionExpression) {
|
|
1700
|
+
input.ConditionExpression = ConditionExpression;
|
|
1701
|
+
}
|
|
1702
|
+
if (Object.keys(names).length > 0) {
|
|
1703
|
+
input.ExpressionAttributeNames = names;
|
|
1704
|
+
}
|
|
1705
|
+
if (Object.keys(values).length > 0) {
|
|
1706
|
+
input.ExpressionAttributeValues = values;
|
|
1707
|
+
}
|
|
1708
|
+
if (props.returnValues) {
|
|
1709
|
+
input.ReturnValues = RETURN_VALUES_MAP[props.returnValues];
|
|
1710
|
+
}
|
|
1711
|
+
return ddb.client.send(new libDynamodb.UpdateCommand(input));
|
|
1712
|
+
}
|
|
1534
1713
|
async function batchGet(ddb, props) {
|
|
1535
1714
|
const { keys, maxRetries = 3, strong = false } = props;
|
|
1536
1715
|
const TableName = getTableNameOrThrow(props.tableName, ddb.tableName);
|
|
@@ -1879,24 +2058,44 @@ async function transact(ddb, props) {
|
|
|
1879
2058
|
};
|
|
1880
2059
|
}
|
|
1881
2060
|
if ("update" in item2) {
|
|
1882
|
-
const {
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
2061
|
+
const names = {};
|
|
2062
|
+
const values = {};
|
|
2063
|
+
const UpdateExpression = buildUpdateExpression(
|
|
2064
|
+
item2.update,
|
|
2065
|
+
names,
|
|
2066
|
+
values
|
|
2067
|
+
);
|
|
2068
|
+
if (!UpdateExpression) {
|
|
2069
|
+
throw new Error(
|
|
2070
|
+
`[ddb] [transact] update requires at least one operation (set, incr, remove, append, etc.)`
|
|
2071
|
+
);
|
|
2072
|
+
}
|
|
2073
|
+
const condResult = buildCondition(
|
|
1887
2074
|
item2.update.conditions,
|
|
1888
2075
|
item2.update.cond,
|
|
1889
|
-
|
|
1890
|
-
|
|
2076
|
+
void 0,
|
|
2077
|
+
void 0
|
|
1891
2078
|
);
|
|
2079
|
+
if (condResult.ExpressionAttributeNames) {
|
|
2080
|
+
Object.assign(names, condResult.ExpressionAttributeNames);
|
|
2081
|
+
}
|
|
2082
|
+
if (condResult.ExpressionAttributeValues) {
|
|
2083
|
+
Object.assign(values, condResult.ExpressionAttributeValues);
|
|
2084
|
+
}
|
|
1892
2085
|
return {
|
|
1893
2086
|
Update: {
|
|
1894
2087
|
TableName,
|
|
1895
2088
|
Key: item2.update.key,
|
|
1896
|
-
UpdateExpression
|
|
1897
|
-
...ConditionExpression && {
|
|
1898
|
-
|
|
1899
|
-
|
|
2089
|
+
UpdateExpression,
|
|
2090
|
+
...condResult.ConditionExpression && {
|
|
2091
|
+
ConditionExpression: condResult.ConditionExpression
|
|
2092
|
+
},
|
|
2093
|
+
...Object.keys(values).length > 0 && {
|
|
2094
|
+
ExpressionAttributeValues: values
|
|
2095
|
+
},
|
|
2096
|
+
...Object.keys(names).length > 0 && {
|
|
2097
|
+
ExpressionAttributeNames: names
|
|
2098
|
+
}
|
|
1900
2099
|
}
|
|
1901
2100
|
};
|
|
1902
2101
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSame
|
|
|
2
2
|
import awaitSpawn from 'await-spawn';
|
|
3
3
|
import { promises } from 'fs';
|
|
4
4
|
import { ArkErrors } from 'arktype';
|
|
5
|
-
import { DynamoDBDocumentClient, ScanCommand, QueryCommand, DeleteCommand, PutCommand, BatchGetCommand, TransactWriteCommand, BatchWriteCommand } from '@aws-sdk/lib-dynamodb';
|
|
6
|
-
import { DynamoDBClient, DeleteTableCommand, DescribeTableCommand, DynamoDBServiceException, CreateTableCommand, DescribeContinuousBackupsCommand, UpdateContinuousBackupsCommand, waitUntilTableExists } from '@aws-sdk/client-dynamodb';
|
|
5
|
+
import { DynamoDBDocumentClient, ScanCommand, QueryCommand, DeleteCommand, PutCommand, UpdateCommand, BatchGetCommand, TransactWriteCommand, BatchWriteCommand } from '@aws-sdk/lib-dynamodb';
|
|
6
|
+
import { ReturnValue, DynamoDBClient, DeleteTableCommand, DescribeTableCommand, DynamoDBServiceException, CreateTableCommand, DescribeContinuousBackupsCommand, UpdateContinuousBackupsCommand, waitUntilTableExists } from '@aws-sdk/client-dynamodb';
|
|
7
7
|
import signale from 'signale';
|
|
8
8
|
import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
|
|
9
9
|
import { SQSClient, SendMessageCommand } from '@aws-sdk/client-sqs';
|
|
@@ -1223,7 +1223,8 @@ __export(ddb_exports, {
|
|
|
1223
1223
|
remove: () => remove2,
|
|
1224
1224
|
save: () => save,
|
|
1225
1225
|
tableExists: () => tableExists,
|
|
1226
|
-
transact: () => transact
|
|
1226
|
+
transact: () => transact,
|
|
1227
|
+
update: () => update
|
|
1227
1228
|
});
|
|
1228
1229
|
|
|
1229
1230
|
// src/server/aws/ddb/fns.ts
|
|
@@ -1375,6 +1376,124 @@ var chunk2 = (arr, size) => {
|
|
|
1375
1376
|
(_, i) => arr.slice(i * size, i * size + size)
|
|
1376
1377
|
);
|
|
1377
1378
|
};
|
|
1379
|
+
var buildUpdateExpression = (ops, names, values) => {
|
|
1380
|
+
const setParts = [];
|
|
1381
|
+
const removeParts = [];
|
|
1382
|
+
const addParts = [];
|
|
1383
|
+
let nameIdx = 0;
|
|
1384
|
+
const getName = (key) => {
|
|
1385
|
+
const token = `#u${nameIdx++}`;
|
|
1386
|
+
names[token] = key;
|
|
1387
|
+
return token;
|
|
1388
|
+
};
|
|
1389
|
+
let valIdx = 0;
|
|
1390
|
+
const getValue = (val) => {
|
|
1391
|
+
const token = `:u${valIdx++}`;
|
|
1392
|
+
values[token] = val;
|
|
1393
|
+
return token;
|
|
1394
|
+
};
|
|
1395
|
+
if (ops.set) {
|
|
1396
|
+
for (const [key, val] of Object.entries(
|
|
1397
|
+
ops.set
|
|
1398
|
+
)) {
|
|
1399
|
+
if (val !== void 0) {
|
|
1400
|
+
setParts.push(`${getName(key)} = ${getValue(val)}`);
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
if (ops.incr) {
|
|
1405
|
+
for (const [key, val] of Object.entries(
|
|
1406
|
+
ops.incr
|
|
1407
|
+
)) {
|
|
1408
|
+
if (val !== void 0) {
|
|
1409
|
+
const nameToken = getName(key);
|
|
1410
|
+
setParts.push(`${nameToken} = ${nameToken} + ${getValue(val)}`);
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
if (ops.remove) {
|
|
1415
|
+
for (const key of ops.remove) {
|
|
1416
|
+
removeParts.push(getName(key));
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
if (ops.append) {
|
|
1420
|
+
for (const [key, val] of Object.entries(
|
|
1421
|
+
ops.append
|
|
1422
|
+
)) {
|
|
1423
|
+
if (val !== void 0) {
|
|
1424
|
+
const nameToken = getName(key);
|
|
1425
|
+
setParts.push(
|
|
1426
|
+
`${nameToken} = list_append(${nameToken}, ${getValue(val)})`
|
|
1427
|
+
);
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
if (ops.prepend) {
|
|
1432
|
+
for (const [key, val] of Object.entries(
|
|
1433
|
+
ops.prepend
|
|
1434
|
+
)) {
|
|
1435
|
+
if (val !== void 0) {
|
|
1436
|
+
const nameToken = getName(key);
|
|
1437
|
+
setParts.push(
|
|
1438
|
+
`${nameToken} = list_append(${getValue(val)}, ${nameToken})`
|
|
1439
|
+
);
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
if (ops.ifNotExists) {
|
|
1444
|
+
for (const [key, val] of Object.entries(
|
|
1445
|
+
ops.ifNotExists
|
|
1446
|
+
)) {
|
|
1447
|
+
if (val !== void 0) {
|
|
1448
|
+
const nameToken = getName(key);
|
|
1449
|
+
setParts.push(
|
|
1450
|
+
`${nameToken} = if_not_exists(${nameToken}, ${getValue(val)})`
|
|
1451
|
+
);
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
if (ops.add) {
|
|
1456
|
+
for (const [key, val] of Object.entries(
|
|
1457
|
+
ops.add
|
|
1458
|
+
)) {
|
|
1459
|
+
if (val !== void 0) {
|
|
1460
|
+
addParts.push(`${getName(key)} ${getValue(val)}`);
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
if (ops.setPath) {
|
|
1465
|
+
for (const [path, val] of Object.entries(ops.setPath)) {
|
|
1466
|
+
if (val !== void 0) {
|
|
1467
|
+
const pathParts = path.split(".");
|
|
1468
|
+
const pathTokens = pathParts.map((p) => getName(p));
|
|
1469
|
+
setParts.push(`${pathTokens.join(".")} = ${getValue(val)}`);
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
if (ops.compute) {
|
|
1474
|
+
for (const [key, val] of Object.entries(
|
|
1475
|
+
ops.compute
|
|
1476
|
+
)) {
|
|
1477
|
+
if (val && Array.isArray(val) && val.length === 3) {
|
|
1478
|
+
const [left, op, right] = val;
|
|
1479
|
+
setParts.push(
|
|
1480
|
+
`${getName(key)} = ${getName(left)} ${op} ${getName(right)}`
|
|
1481
|
+
);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
const exprParts = [];
|
|
1486
|
+
if (setParts.length > 0) {
|
|
1487
|
+
exprParts.push(`SET ${setParts.join(", ")}`);
|
|
1488
|
+
}
|
|
1489
|
+
if (removeParts.length > 0) {
|
|
1490
|
+
exprParts.push(`REMOVE ${removeParts.join(", ")}`);
|
|
1491
|
+
}
|
|
1492
|
+
if (addParts.length > 0) {
|
|
1493
|
+
exprParts.push(`ADD ${addParts.join(", ")}`);
|
|
1494
|
+
}
|
|
1495
|
+
return exprParts.join(" ") || void 0;
|
|
1496
|
+
};
|
|
1378
1497
|
|
|
1379
1498
|
// src/server/aws/ddb/domain.ts
|
|
1380
1499
|
var create2 = (props) => {
|
|
@@ -1523,6 +1642,66 @@ var save = async (ddb, props) => {
|
|
|
1523
1642
|
});
|
|
1524
1643
|
return ddb.client.send(command);
|
|
1525
1644
|
};
|
|
1645
|
+
var RETURN_VALUES_MAP = {
|
|
1646
|
+
updatedNew: ReturnValue.UPDATED_NEW,
|
|
1647
|
+
updatedOld: ReturnValue.UPDATED_OLD,
|
|
1648
|
+
allOld: ReturnValue.ALL_OLD,
|
|
1649
|
+
allNew: ReturnValue.ALL_NEW,
|
|
1650
|
+
none: ReturnValue.NONE
|
|
1651
|
+
};
|
|
1652
|
+
async function update(ddb, props) {
|
|
1653
|
+
const TableName = getTableNameOrThrow(
|
|
1654
|
+
props.tableName,
|
|
1655
|
+
ddb.tableName
|
|
1656
|
+
);
|
|
1657
|
+
const names = {};
|
|
1658
|
+
const values = {};
|
|
1659
|
+
const UpdateExpression = buildUpdateExpression(
|
|
1660
|
+
props,
|
|
1661
|
+
names,
|
|
1662
|
+
values
|
|
1663
|
+
);
|
|
1664
|
+
if (!UpdateExpression) {
|
|
1665
|
+
throw new Error(
|
|
1666
|
+
`[ddb] [update] requires at least one operation (set, incr, remove, append, etc.)`
|
|
1667
|
+
);
|
|
1668
|
+
}
|
|
1669
|
+
let ConditionExpression;
|
|
1670
|
+
if (props.conditions || props.cond) {
|
|
1671
|
+
const condNames = {};
|
|
1672
|
+
const condValues = {};
|
|
1673
|
+
if (props.conditions) {
|
|
1674
|
+
ConditionExpression = buildFilterExpression(
|
|
1675
|
+
props.conditions,
|
|
1676
|
+
condNames,
|
|
1677
|
+
condValues
|
|
1678
|
+
);
|
|
1679
|
+
}
|
|
1680
|
+
if (props.cond) {
|
|
1681
|
+
ConditionExpression = ConditionExpression ? `(${ConditionExpression}) AND (${props.cond})` : props.cond;
|
|
1682
|
+
}
|
|
1683
|
+
Object.assign(names, condNames);
|
|
1684
|
+
Object.assign(values, condValues);
|
|
1685
|
+
}
|
|
1686
|
+
const input = {
|
|
1687
|
+
TableName,
|
|
1688
|
+
Key: props.key,
|
|
1689
|
+
UpdateExpression
|
|
1690
|
+
};
|
|
1691
|
+
if (ConditionExpression) {
|
|
1692
|
+
input.ConditionExpression = ConditionExpression;
|
|
1693
|
+
}
|
|
1694
|
+
if (Object.keys(names).length > 0) {
|
|
1695
|
+
input.ExpressionAttributeNames = names;
|
|
1696
|
+
}
|
|
1697
|
+
if (Object.keys(values).length > 0) {
|
|
1698
|
+
input.ExpressionAttributeValues = values;
|
|
1699
|
+
}
|
|
1700
|
+
if (props.returnValues) {
|
|
1701
|
+
input.ReturnValues = RETURN_VALUES_MAP[props.returnValues];
|
|
1702
|
+
}
|
|
1703
|
+
return ddb.client.send(new UpdateCommand(input));
|
|
1704
|
+
}
|
|
1526
1705
|
async function batchGet(ddb, props) {
|
|
1527
1706
|
const { keys, maxRetries = 3, strong = false } = props;
|
|
1528
1707
|
const TableName = getTableNameOrThrow(props.tableName, ddb.tableName);
|
|
@@ -1871,24 +2050,44 @@ async function transact(ddb, props) {
|
|
|
1871
2050
|
};
|
|
1872
2051
|
}
|
|
1873
2052
|
if ("update" in item2) {
|
|
1874
|
-
const {
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
2053
|
+
const names = {};
|
|
2054
|
+
const values = {};
|
|
2055
|
+
const UpdateExpression = buildUpdateExpression(
|
|
2056
|
+
item2.update,
|
|
2057
|
+
names,
|
|
2058
|
+
values
|
|
2059
|
+
);
|
|
2060
|
+
if (!UpdateExpression) {
|
|
2061
|
+
throw new Error(
|
|
2062
|
+
`[ddb] [transact] update requires at least one operation (set, incr, remove, append, etc.)`
|
|
2063
|
+
);
|
|
2064
|
+
}
|
|
2065
|
+
const condResult = buildCondition(
|
|
1879
2066
|
item2.update.conditions,
|
|
1880
2067
|
item2.update.cond,
|
|
1881
|
-
|
|
1882
|
-
|
|
2068
|
+
void 0,
|
|
2069
|
+
void 0
|
|
1883
2070
|
);
|
|
2071
|
+
if (condResult.ExpressionAttributeNames) {
|
|
2072
|
+
Object.assign(names, condResult.ExpressionAttributeNames);
|
|
2073
|
+
}
|
|
2074
|
+
if (condResult.ExpressionAttributeValues) {
|
|
2075
|
+
Object.assign(values, condResult.ExpressionAttributeValues);
|
|
2076
|
+
}
|
|
1884
2077
|
return {
|
|
1885
2078
|
Update: {
|
|
1886
2079
|
TableName,
|
|
1887
2080
|
Key: item2.update.key,
|
|
1888
|
-
UpdateExpression
|
|
1889
|
-
...ConditionExpression && {
|
|
1890
|
-
|
|
1891
|
-
|
|
2081
|
+
UpdateExpression,
|
|
2082
|
+
...condResult.ConditionExpression && {
|
|
2083
|
+
ConditionExpression: condResult.ConditionExpression
|
|
2084
|
+
},
|
|
2085
|
+
...Object.keys(values).length > 0 && {
|
|
2086
|
+
ExpressionAttributeValues: values
|
|
2087
|
+
},
|
|
2088
|
+
...Object.keys(names).length > 0 && {
|
|
2089
|
+
ExpressionAttributeNames: names
|
|
2090
|
+
}
|
|
1892
2091
|
}
|
|
1893
2092
|
};
|
|
1894
2093
|
}
|