@infra-blocks/aws-dynamodb 0.17.1 → 0.18.0-alpha.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/README.md +3 -3
- package/lib/cjs/client.d.ts +17 -0
- package/lib/cjs/client.js +30 -0
- package/lib/cjs/client.js.map +1 -1
- package/lib/cjs/commands/expressions/condition.d.ts +13 -2
- package/lib/cjs/commands/expressions/condition.js +28 -20
- package/lib/cjs/commands/expressions/condition.js.map +1 -1
- package/lib/cjs/commands/expressions/expression.d.ts +8 -0
- package/lib/cjs/commands/expressions/expression.js +3 -0
- package/lib/cjs/commands/expressions/expression.js.map +1 -0
- package/lib/cjs/commands/expressions/update.d.ts +11 -0
- package/lib/cjs/commands/expressions/update.js +37 -12
- package/lib/cjs/commands/expressions/update.js.map +1 -1
- package/lib/cjs/commands/update-item.d.ts +18 -0
- package/lib/cjs/commands/update-item.js +54 -0
- package/lib/cjs/commands/update-item.js.map +1 -0
- package/lib/esm/client.d.ts +17 -0
- package/lib/esm/client.js +30 -0
- package/lib/esm/client.js.map +1 -1
- package/lib/esm/commands/expressions/condition.d.ts +13 -2
- package/lib/esm/commands/expressions/condition.js +28 -20
- package/lib/esm/commands/expressions/condition.js.map +1 -1
- package/lib/esm/commands/expressions/expression.d.ts +8 -0
- package/lib/esm/commands/expressions/expression.js +2 -0
- package/lib/esm/commands/expressions/expression.js.map +1 -0
- package/lib/esm/commands/expressions/update.d.ts +11 -0
- package/lib/esm/commands/expressions/update.js +35 -11
- package/lib/esm/commands/expressions/update.js.map +1 -1
- package/lib/esm/commands/update-item.d.ts +18 -0
- package/lib/esm/commands/update-item.js +50 -0
- package/lib/esm/commands/update-item.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
A convenience library wrapper around [`@aws-sdk/client-dynamodb`](https://www.npmjs.com/package/@aws-sdk/client-dynamodb) and
|
|
7
7
|
[`@aws-sdk/lib-dynamodb`](https://www.npmjs.com/package/@aws-sdk/lib-dynamodb). The wrapper offers:
|
|
8
|
-
-
|
|
9
|
-
- More conventional field names. Input and output fields use the
|
|
10
|
-
imposed by the AWS APIs.
|
|
8
|
+
- A type safe expression language that automatically handles the aliasing of attribute names and values.
|
|
9
|
+
- More conventional field names. Input and output fields use the more common `camelCase` JS/TS convention
|
|
10
|
+
over the `PascalCase` imposed by the AWS APIs.
|
|
11
11
|
- Every client error is wrapped into a error adding description about which operation triggered the error.
|
|
12
12
|
- Pagination is provided for APIs that support it and exposed as `AsyncIterators`.
|
package/lib/cjs/client.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { type CreateTableParams } from "./commands/create-table.js";
|
|
|
7
7
|
import { type GetItemParams } from "./commands/get-item.js";
|
|
8
8
|
import { type PutItemParams } from "./commands/put-item.js";
|
|
9
9
|
import { type QueryParams } from "./commands/query.js";
|
|
10
|
+
import { type UpdateItemParams } from "./commands/update-item.js";
|
|
10
11
|
import { type WriteTransactionParams } from "./commands/write-transaction.js";
|
|
11
12
|
import type { Attributes } from "./types.js";
|
|
12
13
|
/**
|
|
@@ -115,6 +116,22 @@ export declare class DynamoDbClient {
|
|
|
115
116
|
* @param options - Options to pass to the underlying retry mechanism.
|
|
116
117
|
*/
|
|
117
118
|
ready(options?: Omit<RetryConfig, "isRetryableError">): Retry<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Updates an item using the UpdateItem API.
|
|
121
|
+
*
|
|
122
|
+
* This API *updates* or create an item. In contrast to the {@link putItem} method,
|
|
123
|
+
* if the item already exists, updates do not replace the entire item, but rather
|
|
124
|
+
* apply the requested update actions to the existing item. Refer to the API
|
|
125
|
+
* documentation for more details.
|
|
126
|
+
*
|
|
127
|
+
* In this design, the `params.update` is a list of {@link UpdateAction}s that
|
|
128
|
+
* can be constructed using the provided factory methods, such as {@link assign}.
|
|
129
|
+
*
|
|
130
|
+
* @param params - The parameters to use to update the item.
|
|
131
|
+
*
|
|
132
|
+
* @see https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
|
|
133
|
+
*/
|
|
134
|
+
updateItem(params: UpdateItemParams): Promise<void>;
|
|
118
135
|
/**
|
|
119
136
|
* Executes a write transaction using the TransactWriteItems API.
|
|
120
137
|
*
|
package/lib/cjs/client.js
CHANGED
|
@@ -9,6 +9,7 @@ const create_table_js_1 = require("./commands/create-table.js");
|
|
|
9
9
|
const get_item_js_1 = require("./commands/get-item.js");
|
|
10
10
|
const put_item_js_1 = require("./commands/put-item.js");
|
|
11
11
|
const query_js_1 = require("./commands/query.js");
|
|
12
|
+
const update_item_js_1 = require("./commands/update-item.js");
|
|
12
13
|
const write_transaction_js_1 = require("./commands/write-transaction.js");
|
|
13
14
|
class DynamoDbClientError extends Error {
|
|
14
15
|
constructor(message, options) {
|
|
@@ -189,6 +190,35 @@ class DynamoDbClient {
|
|
|
189
190
|
},
|
|
190
191
|
});
|
|
191
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Updates an item using the UpdateItem API.
|
|
195
|
+
*
|
|
196
|
+
* This API *updates* or create an item. In contrast to the {@link putItem} method,
|
|
197
|
+
* if the item already exists, updates do not replace the entire item, but rather
|
|
198
|
+
* apply the requested update actions to the existing item. Refer to the API
|
|
199
|
+
* documentation for more details.
|
|
200
|
+
*
|
|
201
|
+
* In this design, the `params.update` is a list of {@link UpdateAction}s that
|
|
202
|
+
* can be constructed using the provided factory methods, such as {@link assign}.
|
|
203
|
+
*
|
|
204
|
+
* @param params - The parameters to use to update the item.
|
|
205
|
+
*
|
|
206
|
+
* @see https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
|
|
207
|
+
*/
|
|
208
|
+
async updateItem(params) {
|
|
209
|
+
if (this.logger.isDebugEnabled()) {
|
|
210
|
+
this.logger.debug("updateItem(%s)", JSON.stringify(params));
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
const command = update_item_js_1.UpdateItem.from(params);
|
|
214
|
+
await this.client.send(command.toAwsCommand());
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
throw new DynamoDbClientError("error while updating item", {
|
|
218
|
+
cause: err,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
192
222
|
/**
|
|
193
223
|
* Executes a write transaction using the TransactWriteItems API.
|
|
194
224
|
*
|
package/lib/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AttributeType } from "../../types.js";
|
|
2
2
|
import type { AttributeNames } from "../attributes/names.js";
|
|
3
3
|
import type { AttributeValues } from "../attributes/values.js";
|
|
4
|
+
import type { IExpression } from "./expression.js";
|
|
4
5
|
import { AttributeOperand, type IOperand, type Operand, type ValueOperand } from "./operands.js";
|
|
5
6
|
export type ConditionOperand = Operand | SizeOperand;
|
|
6
7
|
export type Stringifier = (params: {
|
|
@@ -10,9 +11,9 @@ export type Stringifier = (params: {
|
|
|
10
11
|
export interface ConditionParams {
|
|
11
12
|
stringify: Stringifier;
|
|
12
13
|
}
|
|
13
|
-
export declare class Condition {
|
|
14
|
+
export declare class Condition implements IExpression {
|
|
14
15
|
private readonly stringifier;
|
|
15
|
-
constructor(
|
|
16
|
+
private constructor();
|
|
16
17
|
stringify(params: {
|
|
17
18
|
names: AttributeNames;
|
|
18
19
|
values: AttributeValues;
|
|
@@ -37,6 +38,16 @@ export declare class Condition {
|
|
|
37
38
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
38
39
|
*/
|
|
39
40
|
or(other: Condition): Condition;
|
|
41
|
+
/**
|
|
42
|
+
* Factory method to create a new {@link Condition} instance.
|
|
43
|
+
*
|
|
44
|
+
* This is not meant to be called outside this package.
|
|
45
|
+
*
|
|
46
|
+
* @param params - The parameters to create the condition.
|
|
47
|
+
*
|
|
48
|
+
* @returns A new {@link Condition} instance.
|
|
49
|
+
*/
|
|
50
|
+
static from(params: ConditionParams): Condition;
|
|
40
51
|
}
|
|
41
52
|
/**
|
|
42
53
|
* Negates the provided condition using the `NOT` operator.
|
|
@@ -25,7 +25,7 @@ class Condition {
|
|
|
25
25
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
26
26
|
*/
|
|
27
27
|
and(other) {
|
|
28
|
-
return
|
|
28
|
+
return Condition.from({
|
|
29
29
|
stringify: ({ names, values }) => {
|
|
30
30
|
const left = this.stringify({ names, values });
|
|
31
31
|
const right = other.stringify({ names, values });
|
|
@@ -43,7 +43,7 @@ class Condition {
|
|
|
43
43
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
44
44
|
*/
|
|
45
45
|
or(other) {
|
|
46
|
-
return
|
|
46
|
+
return Condition.from({
|
|
47
47
|
stringify: ({ names, values }) => {
|
|
48
48
|
const left = this.stringify({ names, values });
|
|
49
49
|
const right = other.stringify({ names, values });
|
|
@@ -51,6 +51,18 @@ class Condition {
|
|
|
51
51
|
},
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Factory method to create a new {@link Condition} instance.
|
|
56
|
+
*
|
|
57
|
+
* This is not meant to be called outside this package.
|
|
58
|
+
*
|
|
59
|
+
* @param params - The parameters to create the condition.
|
|
60
|
+
*
|
|
61
|
+
* @returns A new {@link Condition} instance.
|
|
62
|
+
*/
|
|
63
|
+
static from(params) {
|
|
64
|
+
return new Condition(params);
|
|
65
|
+
}
|
|
54
66
|
}
|
|
55
67
|
exports.Condition = Condition;
|
|
56
68
|
/**
|
|
@@ -63,16 +75,12 @@ exports.Condition = Condition;
|
|
|
63
75
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
64
76
|
*/
|
|
65
77
|
function not(inner) {
|
|
66
|
-
return
|
|
78
|
+
return Condition.from({
|
|
67
79
|
stringify: ({ names, values }) => {
|
|
68
80
|
return `NOT (${inner.stringify({ names, values })})`;
|
|
69
81
|
},
|
|
70
82
|
});
|
|
71
83
|
}
|
|
72
|
-
// TODO: make this a static factory?
|
|
73
|
-
function condition(params) {
|
|
74
|
-
return new Condition(params);
|
|
75
|
-
}
|
|
76
84
|
// NOTE: methods here means that both sides of the conditions can either be attribute names or attribute values.
|
|
77
85
|
class OperandConditionBuilder {
|
|
78
86
|
operand;
|
|
@@ -89,7 +97,7 @@ class OperandConditionBuilder {
|
|
|
89
97
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.Functions
|
|
90
98
|
*/
|
|
91
99
|
beginsWith(rhs) {
|
|
92
|
-
return
|
|
100
|
+
return Condition.from({
|
|
93
101
|
stringify: ({ names, values }) => {
|
|
94
102
|
return `begins_with(${this.substitute({ names, values })}, ${rhs.substitute({ names, values })})`;
|
|
95
103
|
},
|
|
@@ -109,7 +117,7 @@ class OperandConditionBuilder {
|
|
|
109
117
|
*/
|
|
110
118
|
// TODO: test with size operands.
|
|
111
119
|
between(lower, upper) {
|
|
112
|
-
return
|
|
120
|
+
return Condition.from({
|
|
113
121
|
stringify: ({ names, values }) => {
|
|
114
122
|
return `${this.substitute({ names, values })} BETWEEN ${lower.substitute({ names, values })} AND ${upper.substitute({ names, values })}`;
|
|
115
123
|
},
|
|
@@ -126,7 +134,7 @@ class OperandConditionBuilder {
|
|
|
126
134
|
*/
|
|
127
135
|
// TODO: test with size operands.
|
|
128
136
|
contains(rhs) {
|
|
129
|
-
return
|
|
137
|
+
return Condition.from({
|
|
130
138
|
stringify: ({ names, values }) => {
|
|
131
139
|
return `contains(${this.substitute({ names, values })}, ${rhs.substitute({ names, values })})`;
|
|
132
140
|
},
|
|
@@ -143,7 +151,7 @@ class OperandConditionBuilder {
|
|
|
143
151
|
*/
|
|
144
152
|
// TODO: this should be typed better once moved out. It accepts the interface only to make the tests compile.
|
|
145
153
|
equals(rhs) {
|
|
146
|
-
return
|
|
154
|
+
return Condition.from({
|
|
147
155
|
stringify: ({ names, values }) => {
|
|
148
156
|
return `${this.substitute({ names, values })} = ${rhs.substitute({ names, values })}`;
|
|
149
157
|
},
|
|
@@ -164,7 +172,7 @@ class OperandConditionBuilder {
|
|
|
164
172
|
*/
|
|
165
173
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
166
174
|
greaterThan(rhs) {
|
|
167
|
-
return
|
|
175
|
+
return Condition.from({
|
|
168
176
|
stringify: ({ names, values }) => {
|
|
169
177
|
return `${this.substitute({ names, values })} > ${rhs.substitute({ names, values })}`;
|
|
170
178
|
},
|
|
@@ -185,7 +193,7 @@ class OperandConditionBuilder {
|
|
|
185
193
|
*/
|
|
186
194
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
187
195
|
greaterThanOrEquals(rhs) {
|
|
188
|
-
return
|
|
196
|
+
return Condition.from({
|
|
189
197
|
stringify: ({ names, values }) => {
|
|
190
198
|
return `${this.substitute({ names, values })} >= ${rhs.substitute({ names, values })}`;
|
|
191
199
|
},
|
|
@@ -213,7 +221,7 @@ class OperandConditionBuilder {
|
|
|
213
221
|
if (operands.length > 100) {
|
|
214
222
|
throw new Error(`up to 100 operands are support for the IN operator, got ${operands.length}`);
|
|
215
223
|
}
|
|
216
|
-
return
|
|
224
|
+
return Condition.from({
|
|
217
225
|
stringify: ({ names, values }) => {
|
|
218
226
|
const operandsString = operands
|
|
219
227
|
.map((operand) => operand.substitute({ names, values }))
|
|
@@ -233,7 +241,7 @@ class OperandConditionBuilder {
|
|
|
233
241
|
*/
|
|
234
242
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
235
243
|
lowerThan(rhs) {
|
|
236
|
-
return
|
|
244
|
+
return Condition.from({
|
|
237
245
|
stringify: ({ names, values }) => {
|
|
238
246
|
return `${this.substitute({ names, values })} < ${rhs.substitute({ names, values })}`;
|
|
239
247
|
},
|
|
@@ -254,7 +262,7 @@ class OperandConditionBuilder {
|
|
|
254
262
|
*/
|
|
255
263
|
//TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
256
264
|
lowerThanOrEquals(rhs) {
|
|
257
|
-
return
|
|
265
|
+
return Condition.from({
|
|
258
266
|
stringify: ({ names, values }) => {
|
|
259
267
|
return `${this.substitute({ names, values })} <= ${rhs.substitute({ names, values })}`;
|
|
260
268
|
},
|
|
@@ -274,7 +282,7 @@ class OperandConditionBuilder {
|
|
|
274
282
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.Comparators
|
|
275
283
|
*/
|
|
276
284
|
notEquals(rhs) {
|
|
277
|
-
return
|
|
285
|
+
return Condition.from({
|
|
278
286
|
stringify: ({ names, values }) => {
|
|
279
287
|
return `${this.substitute({ names, values })} <> ${rhs.substitute({ names, values })}`;
|
|
280
288
|
},
|
|
@@ -296,7 +304,7 @@ class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
296
304
|
*/
|
|
297
305
|
// NOTE: the left hand side of this condition can only be a literal value (tested)
|
|
298
306
|
exists() {
|
|
299
|
-
return
|
|
307
|
+
return Condition.from({
|
|
300
308
|
stringify: ({ names, values }) => {
|
|
301
309
|
return `attribute_exists(${this.substitute({ names, values })})`;
|
|
302
310
|
},
|
|
@@ -307,7 +315,7 @@ class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
307
315
|
*/
|
|
308
316
|
// NOTE: the left hand side of this condition can only be a literal value (tested)
|
|
309
317
|
notExists() {
|
|
310
|
-
return
|
|
318
|
+
return Condition.from({
|
|
311
319
|
stringify: ({ names, values }) => {
|
|
312
320
|
return `attribute_not_exists(${this.substitute({ names, values })})`;
|
|
313
321
|
},
|
|
@@ -321,7 +329,7 @@ class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
321
329
|
// NOTE: the left hand side of this condition *can be* an attribute value pointing to a valid path.
|
|
322
330
|
// NOTE: the right hand side of this condition *must be* an condition attribute (not a literal).
|
|
323
331
|
isType(type) {
|
|
324
|
-
return
|
|
332
|
+
return Condition.from({
|
|
325
333
|
stringify: ({ names, values }) => {
|
|
326
334
|
return `attribute_type(${this.substitute({ names, values })}, ${type.substitute({ names, values })})`;
|
|
327
335
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/commands/expressions/expression.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { AttributeNames } from "../attributes/names.js";
|
|
2
2
|
import type { AttributeValues } from "../attributes/values.js";
|
|
3
|
+
import type { IExpression } from "./expression.js";
|
|
3
4
|
import type { AttributeOperand, IOperand, Operand } from "./operands.js";
|
|
5
|
+
export type UpdateExpressionParams = ReadonlyArray<UpdateAction>;
|
|
6
|
+
export declare class UpdateExpression implements IExpression {
|
|
7
|
+
private readonly clauses;
|
|
8
|
+
private constructor();
|
|
9
|
+
stringify(params: {
|
|
10
|
+
names: AttributeNames;
|
|
11
|
+
values: AttributeValues;
|
|
12
|
+
}): string;
|
|
13
|
+
static from(params: UpdateExpressionParams): UpdateExpression;
|
|
14
|
+
}
|
|
4
15
|
export interface IUpdateAction {
|
|
5
16
|
stringify(params: {
|
|
6
17
|
names: AttributeNames;
|
|
@@ -1,19 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
Notes: an update is made of a series of actions. Each action belongs to a clause and each clause
|
|
4
|
-
can be present at least once in an update. The clauses are:
|
|
5
|
-
- SET,
|
|
6
|
-
- REMOVE,
|
|
7
|
-
- ADD,
|
|
8
|
-
- DELETE
|
|
9
|
-
|
|
10
|
-
SET actions can use the `if_not_exists` function, which returns the value of the attribute if it exists, or a default value if it does not.
|
|
11
|
-
You can also use SET to add or subtract from an attribute that is of type Number. To perform multiple SET actions, separate them with commas.
|
|
12
|
-
*/
|
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.IfNotExistsOperand = exports.MinusAssignment = exports.PlusAssignment = void 0;
|
|
3
|
+
exports.IfNotExistsOperand = exports.MinusAssignment = exports.PlusAssignment = exports.UpdateExpression = void 0;
|
|
15
4
|
exports.assign = assign;
|
|
16
5
|
exports.ifNotExists = ifNotExists;
|
|
6
|
+
class UpdateExpression {
|
|
7
|
+
clauses;
|
|
8
|
+
constructor(clauses) {
|
|
9
|
+
this.clauses = clauses;
|
|
10
|
+
}
|
|
11
|
+
stringify(params) {
|
|
12
|
+
const { names, values } = params;
|
|
13
|
+
const parts = [];
|
|
14
|
+
if (this.clauses.set != null) {
|
|
15
|
+
parts.push(`SET ${this.clauses.set
|
|
16
|
+
.map((action) => action.stringify({ names, values }))
|
|
17
|
+
.join(",")}`);
|
|
18
|
+
}
|
|
19
|
+
return parts.join("\n");
|
|
20
|
+
}
|
|
21
|
+
static from(params) {
|
|
22
|
+
const clauses = {};
|
|
23
|
+
for (const action of params) {
|
|
24
|
+
if (action instanceof Assignment ||
|
|
25
|
+
action instanceof PlusAssignment ||
|
|
26
|
+
action instanceof MinusAssignment) {
|
|
27
|
+
if (clauses.set != null) {
|
|
28
|
+
clauses.set.push(action);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
clauses.set = [action];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new Error("unknown action type in update expression");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return new UpdateExpression(clauses);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.UpdateExpression = UpdateExpression;
|
|
17
42
|
// Note: incrementation works with attribute names and values no prob.
|
|
18
43
|
// There can only be one "+" sign.
|
|
19
44
|
// Nothing forces the operation to happen on the same attribute. For example: SET x = y + 2 is valid and should
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/expressions/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/expressions/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UpdateCommand, type UpdateCommandInput } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { Attribute } from "../types.js";
|
|
3
|
+
import { type Condition, type UpdateExpressionParams } from "./expressions/index.js";
|
|
4
|
+
import type { Command } from "./types.js";
|
|
5
|
+
export interface UpdateItemParams {
|
|
6
|
+
table: string;
|
|
7
|
+
partitionKey: Attribute;
|
|
8
|
+
sortKey?: Attribute;
|
|
9
|
+
condition?: Condition;
|
|
10
|
+
update: UpdateExpressionParams;
|
|
11
|
+
}
|
|
12
|
+
export declare class UpdateItem implements Command<UpdateCommandInput, UpdateCommand> {
|
|
13
|
+
private readonly params;
|
|
14
|
+
private constructor();
|
|
15
|
+
toAwsCommandInput(): UpdateCommandInput;
|
|
16
|
+
toAwsCommand(): UpdateCommand;
|
|
17
|
+
static from(params: UpdateItemParams): UpdateItem;
|
|
18
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateItem = void 0;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
const names_js_1 = require("./attributes/names.js");
|
|
6
|
+
const values_js_1 = require("./attributes/values.js");
|
|
7
|
+
const index_js_1 = require("./expressions/index.js");
|
|
8
|
+
class UpdateItem {
|
|
9
|
+
params;
|
|
10
|
+
constructor(params) {
|
|
11
|
+
this.params = params;
|
|
12
|
+
}
|
|
13
|
+
toAwsCommandInput() {
|
|
14
|
+
const { table, partitionKey, sortKey, condition, update } = this.params;
|
|
15
|
+
const key = {
|
|
16
|
+
[partitionKey.name]: partitionKey.value,
|
|
17
|
+
};
|
|
18
|
+
if (sortKey != null) {
|
|
19
|
+
key[sortKey.name] = sortKey.value;
|
|
20
|
+
}
|
|
21
|
+
const input = {
|
|
22
|
+
TableName: table,
|
|
23
|
+
Key: key,
|
|
24
|
+
};
|
|
25
|
+
const names = names_js_1.AttributeNames.create();
|
|
26
|
+
const values = values_js_1.AttributeValues.create();
|
|
27
|
+
const updateExpression = index_js_1.UpdateExpression.from(update).stringify({
|
|
28
|
+
names,
|
|
29
|
+
values,
|
|
30
|
+
});
|
|
31
|
+
input.UpdateExpression = updateExpression;
|
|
32
|
+
// If there is no condition, we know that the names and values are finalized and
|
|
33
|
+
// we are ready to return the payload.
|
|
34
|
+
if (condition == null) {
|
|
35
|
+
input.ExpressionAttributeNames = names.getSubstitutions();
|
|
36
|
+
input.ExpressionAttributeValues = values.getSubstitutions();
|
|
37
|
+
return input;
|
|
38
|
+
}
|
|
39
|
+
// Otherwise, we need to stringify the condition, reusing the same names and values
|
|
40
|
+
// as before.
|
|
41
|
+
input.ConditionExpression = condition.stringify({ names, values });
|
|
42
|
+
input.ExpressionAttributeNames = names.getSubstitutions();
|
|
43
|
+
input.ExpressionAttributeValues = values.getSubstitutions();
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
46
|
+
toAwsCommand() {
|
|
47
|
+
return new lib_dynamodb_1.UpdateCommand(this.toAwsCommandInput());
|
|
48
|
+
}
|
|
49
|
+
static from(params) {
|
|
50
|
+
return new UpdateItem(params);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.UpdateItem = UpdateItem;
|
|
54
|
+
//# sourceMappingURL=update-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":";;;AAAA,wDAA+E;AAE/E,oDAAuD;AACvD,sDAAyD;AACzD,qDAIgC;AAWhC,MAAa,UAAU;IACJ,MAAM,CAAmB;IAE1C,YAAoB,MAAwB;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAExE,MAAM,GAAG,GAAG;YACV,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK;SACxC,CAAC;QACF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;SACT,CAAC;QAEF,MAAM,KAAK,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAG,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;YAC/D,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAE1C,gFAAgF;QAChF,sCAAsC;QACtC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC1D,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mFAAmF;QACnF,aAAa;QACb,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC1D,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,4BAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAwB;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAtDD,gCAsDC"}
|
package/lib/esm/client.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { type CreateTableParams } from "./commands/create-table.js";
|
|
|
7
7
|
import { type GetItemParams } from "./commands/get-item.js";
|
|
8
8
|
import { type PutItemParams } from "./commands/put-item.js";
|
|
9
9
|
import { type QueryParams } from "./commands/query.js";
|
|
10
|
+
import { type UpdateItemParams } from "./commands/update-item.js";
|
|
10
11
|
import { type WriteTransactionParams } from "./commands/write-transaction.js";
|
|
11
12
|
import type { Attributes } from "./types.js";
|
|
12
13
|
/**
|
|
@@ -115,6 +116,22 @@ export declare class DynamoDbClient {
|
|
|
115
116
|
* @param options - Options to pass to the underlying retry mechanism.
|
|
116
117
|
*/
|
|
117
118
|
ready(options?: Omit<RetryConfig, "isRetryableError">): Retry<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Updates an item using the UpdateItem API.
|
|
121
|
+
*
|
|
122
|
+
* This API *updates* or create an item. In contrast to the {@link putItem} method,
|
|
123
|
+
* if the item already exists, updates do not replace the entire item, but rather
|
|
124
|
+
* apply the requested update actions to the existing item. Refer to the API
|
|
125
|
+
* documentation for more details.
|
|
126
|
+
*
|
|
127
|
+
* In this design, the `params.update` is a list of {@link UpdateAction}s that
|
|
128
|
+
* can be constructed using the provided factory methods, such as {@link assign}.
|
|
129
|
+
*
|
|
130
|
+
* @param params - The parameters to use to update the item.
|
|
131
|
+
*
|
|
132
|
+
* @see https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
|
|
133
|
+
*/
|
|
134
|
+
updateItem(params: UpdateItemParams): Promise<void>;
|
|
118
135
|
/**
|
|
119
136
|
* Executes a write transaction using the TransactWriteItems API.
|
|
120
137
|
*
|
package/lib/esm/client.js
CHANGED
|
@@ -6,6 +6,7 @@ import { CreateTable, } from "./commands/create-table.js";
|
|
|
6
6
|
import { GetItem } from "./commands/get-item.js";
|
|
7
7
|
import { PutItem } from "./commands/put-item.js";
|
|
8
8
|
import { Query } from "./commands/query.js";
|
|
9
|
+
import { UpdateItem } from "./commands/update-item.js";
|
|
9
10
|
import { WriteTransaction, } from "./commands/write-transaction.js";
|
|
10
11
|
export class DynamoDbClientError extends Error {
|
|
11
12
|
constructor(message, options) {
|
|
@@ -185,6 +186,35 @@ export class DynamoDbClient {
|
|
|
185
186
|
},
|
|
186
187
|
});
|
|
187
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Updates an item using the UpdateItem API.
|
|
191
|
+
*
|
|
192
|
+
* This API *updates* or create an item. In contrast to the {@link putItem} method,
|
|
193
|
+
* if the item already exists, updates do not replace the entire item, but rather
|
|
194
|
+
* apply the requested update actions to the existing item. Refer to the API
|
|
195
|
+
* documentation for more details.
|
|
196
|
+
*
|
|
197
|
+
* In this design, the `params.update` is a list of {@link UpdateAction}s that
|
|
198
|
+
* can be constructed using the provided factory methods, such as {@link assign}.
|
|
199
|
+
*
|
|
200
|
+
* @param params - The parameters to use to update the item.
|
|
201
|
+
*
|
|
202
|
+
* @see https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html
|
|
203
|
+
*/
|
|
204
|
+
async updateItem(params) {
|
|
205
|
+
if (this.logger.isDebugEnabled()) {
|
|
206
|
+
this.logger.debug("updateItem(%s)", JSON.stringify(params));
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
const command = UpdateItem.from(params);
|
|
210
|
+
await this.client.send(command.toAwsCommand());
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
throw new DynamoDbClientError("error while updating item", {
|
|
214
|
+
cause: err,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
188
218
|
/**
|
|
189
219
|
* Executes a write transaction using the TransactWriteItems API.
|
|
190
220
|
*
|
package/lib/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AttributeType } from "../../types.js";
|
|
2
2
|
import type { AttributeNames } from "../attributes/names.js";
|
|
3
3
|
import type { AttributeValues } from "../attributes/values.js";
|
|
4
|
+
import type { IExpression } from "./expression.js";
|
|
4
5
|
import { AttributeOperand, type IOperand, type Operand, type ValueOperand } from "./operands.js";
|
|
5
6
|
export type ConditionOperand = Operand | SizeOperand;
|
|
6
7
|
export type Stringifier = (params: {
|
|
@@ -10,9 +11,9 @@ export type Stringifier = (params: {
|
|
|
10
11
|
export interface ConditionParams {
|
|
11
12
|
stringify: Stringifier;
|
|
12
13
|
}
|
|
13
|
-
export declare class Condition {
|
|
14
|
+
export declare class Condition implements IExpression {
|
|
14
15
|
private readonly stringifier;
|
|
15
|
-
constructor(
|
|
16
|
+
private constructor();
|
|
16
17
|
stringify(params: {
|
|
17
18
|
names: AttributeNames;
|
|
18
19
|
values: AttributeValues;
|
|
@@ -37,6 +38,16 @@ export declare class Condition {
|
|
|
37
38
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
38
39
|
*/
|
|
39
40
|
or(other: Condition): Condition;
|
|
41
|
+
/**
|
|
42
|
+
* Factory method to create a new {@link Condition} instance.
|
|
43
|
+
*
|
|
44
|
+
* This is not meant to be called outside this package.
|
|
45
|
+
*
|
|
46
|
+
* @param params - The parameters to create the condition.
|
|
47
|
+
*
|
|
48
|
+
* @returns A new {@link Condition} instance.
|
|
49
|
+
*/
|
|
50
|
+
static from(params: ConditionParams): Condition;
|
|
40
51
|
}
|
|
41
52
|
/**
|
|
42
53
|
* Negates the provided condition using the `NOT` operator.
|
|
@@ -19,7 +19,7 @@ export class Condition {
|
|
|
19
19
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
20
20
|
*/
|
|
21
21
|
and(other) {
|
|
22
|
-
return
|
|
22
|
+
return Condition.from({
|
|
23
23
|
stringify: ({ names, values }) => {
|
|
24
24
|
const left = this.stringify({ names, values });
|
|
25
25
|
const right = other.stringify({ names, values });
|
|
@@ -37,7 +37,7 @@ export class Condition {
|
|
|
37
37
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
38
38
|
*/
|
|
39
39
|
or(other) {
|
|
40
|
-
return
|
|
40
|
+
return Condition.from({
|
|
41
41
|
stringify: ({ names, values }) => {
|
|
42
42
|
const left = this.stringify({ names, values });
|
|
43
43
|
const right = other.stringify({ names, values });
|
|
@@ -45,6 +45,18 @@ export class Condition {
|
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Factory method to create a new {@link Condition} instance.
|
|
50
|
+
*
|
|
51
|
+
* This is not meant to be called outside this package.
|
|
52
|
+
*
|
|
53
|
+
* @param params - The parameters to create the condition.
|
|
54
|
+
*
|
|
55
|
+
* @returns A new {@link Condition} instance.
|
|
56
|
+
*/
|
|
57
|
+
static from(params) {
|
|
58
|
+
return new Condition(params);
|
|
59
|
+
}
|
|
48
60
|
}
|
|
49
61
|
/**
|
|
50
62
|
* Negates the provided condition using the `NOT` operator.
|
|
@@ -56,16 +68,12 @@ export class Condition {
|
|
|
56
68
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.LogicalEvaluations
|
|
57
69
|
*/
|
|
58
70
|
export function not(inner) {
|
|
59
|
-
return
|
|
71
|
+
return Condition.from({
|
|
60
72
|
stringify: ({ names, values }) => {
|
|
61
73
|
return `NOT (${inner.stringify({ names, values })})`;
|
|
62
74
|
},
|
|
63
75
|
});
|
|
64
76
|
}
|
|
65
|
-
// TODO: make this a static factory?
|
|
66
|
-
function condition(params) {
|
|
67
|
-
return new Condition(params);
|
|
68
|
-
}
|
|
69
77
|
// NOTE: methods here means that both sides of the conditions can either be attribute names or attribute values.
|
|
70
78
|
export class OperandConditionBuilder {
|
|
71
79
|
operand;
|
|
@@ -82,7 +90,7 @@ export class OperandConditionBuilder {
|
|
|
82
90
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.Functions
|
|
83
91
|
*/
|
|
84
92
|
beginsWith(rhs) {
|
|
85
|
-
return
|
|
93
|
+
return Condition.from({
|
|
86
94
|
stringify: ({ names, values }) => {
|
|
87
95
|
return `begins_with(${this.substitute({ names, values })}, ${rhs.substitute({ names, values })})`;
|
|
88
96
|
},
|
|
@@ -102,7 +110,7 @@ export class OperandConditionBuilder {
|
|
|
102
110
|
*/
|
|
103
111
|
// TODO: test with size operands.
|
|
104
112
|
between(lower, upper) {
|
|
105
|
-
return
|
|
113
|
+
return Condition.from({
|
|
106
114
|
stringify: ({ names, values }) => {
|
|
107
115
|
return `${this.substitute({ names, values })} BETWEEN ${lower.substitute({ names, values })} AND ${upper.substitute({ names, values })}`;
|
|
108
116
|
},
|
|
@@ -119,7 +127,7 @@ export class OperandConditionBuilder {
|
|
|
119
127
|
*/
|
|
120
128
|
// TODO: test with size operands.
|
|
121
129
|
contains(rhs) {
|
|
122
|
-
return
|
|
130
|
+
return Condition.from({
|
|
123
131
|
stringify: ({ names, values }) => {
|
|
124
132
|
return `contains(${this.substitute({ names, values })}, ${rhs.substitute({ names, values })})`;
|
|
125
133
|
},
|
|
@@ -136,7 +144,7 @@ export class OperandConditionBuilder {
|
|
|
136
144
|
*/
|
|
137
145
|
// TODO: this should be typed better once moved out. It accepts the interface only to make the tests compile.
|
|
138
146
|
equals(rhs) {
|
|
139
|
-
return
|
|
147
|
+
return Condition.from({
|
|
140
148
|
stringify: ({ names, values }) => {
|
|
141
149
|
return `${this.substitute({ names, values })} = ${rhs.substitute({ names, values })}`;
|
|
142
150
|
},
|
|
@@ -157,7 +165,7 @@ export class OperandConditionBuilder {
|
|
|
157
165
|
*/
|
|
158
166
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
159
167
|
greaterThan(rhs) {
|
|
160
|
-
return
|
|
168
|
+
return Condition.from({
|
|
161
169
|
stringify: ({ names, values }) => {
|
|
162
170
|
return `${this.substitute({ names, values })} > ${rhs.substitute({ names, values })}`;
|
|
163
171
|
},
|
|
@@ -178,7 +186,7 @@ export class OperandConditionBuilder {
|
|
|
178
186
|
*/
|
|
179
187
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
180
188
|
greaterThanOrEquals(rhs) {
|
|
181
|
-
return
|
|
189
|
+
return Condition.from({
|
|
182
190
|
stringify: ({ names, values }) => {
|
|
183
191
|
return `${this.substitute({ names, values })} >= ${rhs.substitute({ names, values })}`;
|
|
184
192
|
},
|
|
@@ -206,7 +214,7 @@ export class OperandConditionBuilder {
|
|
|
206
214
|
if (operands.length > 100) {
|
|
207
215
|
throw new Error(`up to 100 operands are support for the IN operator, got ${operands.length}`);
|
|
208
216
|
}
|
|
209
|
-
return
|
|
217
|
+
return Condition.from({
|
|
210
218
|
stringify: ({ names, values }) => {
|
|
211
219
|
const operandsString = operands
|
|
212
220
|
.map((operand) => operand.substitute({ names, values }))
|
|
@@ -226,7 +234,7 @@ export class OperandConditionBuilder {
|
|
|
226
234
|
*/
|
|
227
235
|
// TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
228
236
|
lowerThan(rhs) {
|
|
229
|
-
return
|
|
237
|
+
return Condition.from({
|
|
230
238
|
stringify: ({ names, values }) => {
|
|
231
239
|
return `${this.substitute({ names, values })} < ${rhs.substitute({ names, values })}`;
|
|
232
240
|
},
|
|
@@ -247,7 +255,7 @@ export class OperandConditionBuilder {
|
|
|
247
255
|
*/
|
|
248
256
|
//TODO: test that both sides can be size manually, then add the unit tests if it makes sense.
|
|
249
257
|
lowerThanOrEquals(rhs) {
|
|
250
|
-
return
|
|
258
|
+
return Condition.from({
|
|
251
259
|
stringify: ({ names, values }) => {
|
|
252
260
|
return `${this.substitute({ names, values })} <= ${rhs.substitute({ names, values })}`;
|
|
253
261
|
},
|
|
@@ -267,7 +275,7 @@ export class OperandConditionBuilder {
|
|
|
267
275
|
* @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html#Expressions.OperatorsAndFunctions.Comparators
|
|
268
276
|
*/
|
|
269
277
|
notEquals(rhs) {
|
|
270
|
-
return
|
|
278
|
+
return Condition.from({
|
|
271
279
|
stringify: ({ names, values }) => {
|
|
272
280
|
return `${this.substitute({ names, values })} <> ${rhs.substitute({ names, values })}`;
|
|
273
281
|
},
|
|
@@ -288,7 +296,7 @@ export class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
288
296
|
*/
|
|
289
297
|
// NOTE: the left hand side of this condition can only be a literal value (tested)
|
|
290
298
|
exists() {
|
|
291
|
-
return
|
|
299
|
+
return Condition.from({
|
|
292
300
|
stringify: ({ names, values }) => {
|
|
293
301
|
return `attribute_exists(${this.substitute({ names, values })})`;
|
|
294
302
|
},
|
|
@@ -299,7 +307,7 @@ export class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
299
307
|
*/
|
|
300
308
|
// NOTE: the left hand side of this condition can only be a literal value (tested)
|
|
301
309
|
notExists() {
|
|
302
|
-
return
|
|
310
|
+
return Condition.from({
|
|
303
311
|
stringify: ({ names, values }) => {
|
|
304
312
|
return `attribute_not_exists(${this.substitute({ names, values })})`;
|
|
305
313
|
},
|
|
@@ -313,7 +321,7 @@ export class AttributeConditionBuilder extends OperandConditionBuilder {
|
|
|
313
321
|
// NOTE: the left hand side of this condition *can be* an attribute value pointing to a valid path.
|
|
314
322
|
// NOTE: the right hand side of this condition *must be* an condition attribute (not a literal).
|
|
315
323
|
isType(type) {
|
|
316
|
-
return
|
|
324
|
+
return Condition.from({
|
|
317
325
|
stringify: ({ names, values }) => {
|
|
318
326
|
return `attribute_type(${this.substitute({ names, values })}, ${type.substitute({ names, values })})`;
|
|
319
327
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../src/commands/expressions/expression.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { AttributeNames } from "../attributes/names.js";
|
|
2
2
|
import type { AttributeValues } from "../attributes/values.js";
|
|
3
|
+
import type { IExpression } from "./expression.js";
|
|
3
4
|
import type { AttributeOperand, IOperand, Operand } from "./operands.js";
|
|
5
|
+
export type UpdateExpressionParams = ReadonlyArray<UpdateAction>;
|
|
6
|
+
export declare class UpdateExpression implements IExpression {
|
|
7
|
+
private readonly clauses;
|
|
8
|
+
private constructor();
|
|
9
|
+
stringify(params: {
|
|
10
|
+
names: AttributeNames;
|
|
11
|
+
values: AttributeValues;
|
|
12
|
+
}): string;
|
|
13
|
+
static from(params: UpdateExpressionParams): UpdateExpression;
|
|
14
|
+
}
|
|
4
15
|
export interface IUpdateAction {
|
|
5
16
|
stringify(params: {
|
|
6
17
|
names: AttributeNames;
|
|
@@ -1,14 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
export class UpdateExpression {
|
|
2
|
+
clauses;
|
|
3
|
+
constructor(clauses) {
|
|
4
|
+
this.clauses = clauses;
|
|
5
|
+
}
|
|
6
|
+
stringify(params) {
|
|
7
|
+
const { names, values } = params;
|
|
8
|
+
const parts = [];
|
|
9
|
+
if (this.clauses.set != null) {
|
|
10
|
+
parts.push(`SET ${this.clauses.set
|
|
11
|
+
.map((action) => action.stringify({ names, values }))
|
|
12
|
+
.join(",")}`);
|
|
13
|
+
}
|
|
14
|
+
return parts.join("\n");
|
|
15
|
+
}
|
|
16
|
+
static from(params) {
|
|
17
|
+
const clauses = {};
|
|
18
|
+
for (const action of params) {
|
|
19
|
+
if (action instanceof Assignment ||
|
|
20
|
+
action instanceof PlusAssignment ||
|
|
21
|
+
action instanceof MinusAssignment) {
|
|
22
|
+
if (clauses.set != null) {
|
|
23
|
+
clauses.set.push(action);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
clauses.set = [action];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
throw new Error("unknown action type in update expression");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return new UpdateExpression(clauses);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
12
36
|
// Note: incrementation works with attribute names and values no prob.
|
|
13
37
|
// There can only be one "+" sign.
|
|
14
38
|
// Nothing forces the operation to happen on the same attribute. For example: SET x = y + 2 is valid and should
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/expressions/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/expressions/update.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,gBAAgB;IACV,OAAO,CAA0B;IAElD,YAAoB,OAAgC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,MAGT;QACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACjC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;iBACpB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE,CACf,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAA8B;QACxC,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,IACE,MAAM,YAAY,UAAU;gBAC5B,MAAM,YAAY,cAAc;gBAChC,MAAM,YAAY,eAAe,EACjC,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AAYD,sEAAsE;AACtE,kCAAkC;AAClC,+GAA+G;AAC/G,6DAA6D;AAC7D,MAAM,UAAU;IACG,IAAI,CAAmB;IACvB,OAAO,CAAa;IAErC,YAAY,MAAuD;QACjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,OAAmB;QACtB,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAmB;QACvB,OAAO,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,MAGT;QACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAC5E;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;IACN,CAAC;CACF;AAED,MAAM,OAAO,cAAc;IACR,KAAK,CAAa;IAClB,OAAO,CAAa;IAErC,YAAY,MAGX;QACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,MAGT;QACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAC5E;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;IACN,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IACT,KAAK,CAAa;IAClB,OAAO,CAAa;IAErC,YAAY,MAGX;QACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,MAGT;QACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAC5E;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;IACN,CAAC;CACF;AAED,MAAM,iBAAiB;IACJ,IAAI,CAAmB;IAExC,YAAY,IAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,EAAE,CAAC,OAAmB;QACpB,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,UAAU,MAAM,CAAC,IAAsB;IAC3C,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,OAAO,kBAAkB;IACZ,IAAI,CAAmB;IACvB,YAAY,CAAU;IAEvC,YAAY,MAAyD;QACnE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,MAGV;QACC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACjC,OAAO,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IACzH,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CACzB,IAAsB,EACtB,YAAqB;IAErB,OAAO,IAAI,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UpdateCommand, type UpdateCommandInput } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { Attribute } from "../types.js";
|
|
3
|
+
import { type Condition, type UpdateExpressionParams } from "./expressions/index.js";
|
|
4
|
+
import type { Command } from "./types.js";
|
|
5
|
+
export interface UpdateItemParams {
|
|
6
|
+
table: string;
|
|
7
|
+
partitionKey: Attribute;
|
|
8
|
+
sortKey?: Attribute;
|
|
9
|
+
condition?: Condition;
|
|
10
|
+
update: UpdateExpressionParams;
|
|
11
|
+
}
|
|
12
|
+
export declare class UpdateItem implements Command<UpdateCommandInput, UpdateCommand> {
|
|
13
|
+
private readonly params;
|
|
14
|
+
private constructor();
|
|
15
|
+
toAwsCommandInput(): UpdateCommandInput;
|
|
16
|
+
toAwsCommand(): UpdateCommand;
|
|
17
|
+
static from(params: UpdateItemParams): UpdateItem;
|
|
18
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { UpdateCommand } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import { AttributeNames } from "./attributes/names.js";
|
|
3
|
+
import { AttributeValues } from "./attributes/values.js";
|
|
4
|
+
import { UpdateExpression, } from "./expressions/index.js";
|
|
5
|
+
export class UpdateItem {
|
|
6
|
+
params;
|
|
7
|
+
constructor(params) {
|
|
8
|
+
this.params = params;
|
|
9
|
+
}
|
|
10
|
+
toAwsCommandInput() {
|
|
11
|
+
const { table, partitionKey, sortKey, condition, update } = this.params;
|
|
12
|
+
const key = {
|
|
13
|
+
[partitionKey.name]: partitionKey.value,
|
|
14
|
+
};
|
|
15
|
+
if (sortKey != null) {
|
|
16
|
+
key[sortKey.name] = sortKey.value;
|
|
17
|
+
}
|
|
18
|
+
const input = {
|
|
19
|
+
TableName: table,
|
|
20
|
+
Key: key,
|
|
21
|
+
};
|
|
22
|
+
const names = AttributeNames.create();
|
|
23
|
+
const values = AttributeValues.create();
|
|
24
|
+
const updateExpression = UpdateExpression.from(update).stringify({
|
|
25
|
+
names,
|
|
26
|
+
values,
|
|
27
|
+
});
|
|
28
|
+
input.UpdateExpression = updateExpression;
|
|
29
|
+
// If there is no condition, we know that the names and values are finalized and
|
|
30
|
+
// we are ready to return the payload.
|
|
31
|
+
if (condition == null) {
|
|
32
|
+
input.ExpressionAttributeNames = names.getSubstitutions();
|
|
33
|
+
input.ExpressionAttributeValues = values.getSubstitutions();
|
|
34
|
+
return input;
|
|
35
|
+
}
|
|
36
|
+
// Otherwise, we need to stringify the condition, reusing the same names and values
|
|
37
|
+
// as before.
|
|
38
|
+
input.ConditionExpression = condition.stringify({ names, values });
|
|
39
|
+
input.ExpressionAttributeNames = names.getSubstitutions();
|
|
40
|
+
input.ExpressionAttributeValues = values.getSubstitutions();
|
|
41
|
+
return input;
|
|
42
|
+
}
|
|
43
|
+
toAwsCommand() {
|
|
44
|
+
return new UpdateCommand(this.toAwsCommandInput());
|
|
45
|
+
}
|
|
46
|
+
static from(params) {
|
|
47
|
+
return new UpdateItem(params);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=update-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAEL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAWhC,MAAM,OAAO,UAAU;IACJ,MAAM,CAAmB;IAE1C,YAAoB,MAAwB;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAExE,MAAM,GAAG,GAAG;YACV,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK;SACxC,CAAC;QACF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;SACT,CAAC;QAEF,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;YAC/D,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAE1C,gFAAgF;QAChF,sCAAsC;QACtC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC1D,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mFAAmF;QACnF,aAAa;QACb,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC1D,KAAK,CAAC,yBAAyB,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAwB;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF"}
|