@infra-blocks/aws-dynamodb 0.17.1 → 0.18.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +3 -3
  2. package/lib/cjs/client.d.ts +17 -0
  3. package/lib/cjs/client.js +30 -0
  4. package/lib/cjs/client.js.map +1 -1
  5. package/lib/cjs/commands/expressions/condition.d.ts +13 -2
  6. package/lib/cjs/commands/expressions/condition.js +28 -20
  7. package/lib/cjs/commands/expressions/condition.js.map +1 -1
  8. package/lib/cjs/commands/expressions/expression.d.ts +8 -0
  9. package/lib/cjs/commands/expressions/expression.js +3 -0
  10. package/lib/cjs/commands/expressions/expression.js.map +1 -0
  11. package/lib/cjs/commands/expressions/update.d.ts +11 -0
  12. package/lib/cjs/commands/expressions/update.js +37 -12
  13. package/lib/cjs/commands/expressions/update.js.map +1 -1
  14. package/lib/cjs/commands/update-item.d.ts +18 -0
  15. package/lib/cjs/commands/update-item.js +54 -0
  16. package/lib/cjs/commands/update-item.js.map +1 -0
  17. package/lib/esm/client.d.ts +17 -0
  18. package/lib/esm/client.js +30 -0
  19. package/lib/esm/client.js.map +1 -1
  20. package/lib/esm/commands/expressions/condition.d.ts +13 -2
  21. package/lib/esm/commands/expressions/condition.js +28 -20
  22. package/lib/esm/commands/expressions/condition.js.map +1 -1
  23. package/lib/esm/commands/expressions/expression.d.ts +8 -0
  24. package/lib/esm/commands/expressions/expression.js +2 -0
  25. package/lib/esm/commands/expressions/expression.js.map +1 -0
  26. package/lib/esm/commands/expressions/update.d.ts +11 -0
  27. package/lib/esm/commands/expressions/update.js +35 -11
  28. package/lib/esm/commands/expressions/update.js.map +1 -1
  29. package/lib/esm/commands/update-item.d.ts +18 -0
  30. package/lib/esm/commands/update-item.js +50 -0
  31. package/lib/esm/commands/update-item.js.map +1 -0
  32. 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
- - More type safe interfaces (trough the use of descriptive types, such as for condition expressions).
9
- - More conventional field names. Input and output fields use the conventional `camelCase` JS/TS convention over the `PascalCase`
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`.
@@ -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
  *
@@ -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(params: ConditionParams);
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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":"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"}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AttributeNames } from "../attributes/names.js";
2
+ import type { AttributeValues } from "../attributes/values.js";
3
+ export interface IExpression {
4
+ stringify(params: {
5
+ names: AttributeNames;
6
+ values: AttributeValues;
7
+ }): string;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=expression.js.map
@@ -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":"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"}
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"}
@@ -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
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAgC,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,WAAW,GAEZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAoB,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AA6BzC,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IACR,MAAM,CAAyB;IAC/B,MAAM,CAAS;IAEhC,YAAoB,MAGnB;QACC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,EAAE;gBAC1D,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CAAI,MAAqB;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CACpC,CAAC;YAEF,OAAO,QAAQ,CAAC,IAAqB,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAC3B,2CAA2C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EACnE;gBACE,KAAK,EAAE,GAAG;aACX,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,MAAqB;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,EAAE;gBACxD,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,KAAK,CACV,MAAmB;QAEnB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YAEzE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAS,CAAC;YAClB,CAAC;YAED,OAAO,QAAQ,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;gBACzC,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAC/B,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,MAAM;oBACT,iBAAiB,EAAE,QAAQ,CAAC,gBAAgB;iBAC7C,CAAC,CAAC,YAAY,EAAE,CAClB,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;oBACxC,MAAM,IAAS,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,EAAE;gBAC1D,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,QAAQ,CACZ,MAAmB;QAEnB,IAAI,CAAC;YACH,IAAI,IAAmB,CAAC;YACxB,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAI,MAAM,CAAC,EAAE,CAAC;gBACpD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,MAAM,IAAI,mBAAmB,CAC3B,iDAAiD,CAClD,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,MAAM,IAAI,mBAAmB,CAC3B,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EACrD;gBACE,KAAK,EAAE,GAAG;aACX,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAA+C;QACnD,OAAO,KAAK,CACV,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,EACD;YACE,GAAG,OAAO;YACV,gBAAgB,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC/B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;oBAClB,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC;gBACnC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAA8B;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAC3B,uDAAuD,EACvD;gBACE,KAAK,EAAE,GAAG;aACX,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;IAEtB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,CAAC,MAGX;QACC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC;QACxD,OAAO,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,MAAM,CAAC,MAAqB;QACjC,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;CACF"}
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(params: ConditionParams);
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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 condition({
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":"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"}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../src/commands/expressions/condition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AttributeNames } from "../attributes/names.js";
2
+ import type { AttributeValues } from "../attributes/values.js";
3
+ export interface IExpression {
4
+ stringify(params: {
5
+ names: AttributeNames;
6
+ values: AttributeValues;
7
+ }): string;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=expression.js.map
@@ -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
- Notes: an update is made of a series of actions. Each action belongs to a clause and each clause
3
- can be present at least once in an update. The clauses are:
4
- - SET,
5
- - REMOVE,
6
- - ADD,
7
- - DELETE
8
-
9
- 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.
10
- 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.
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":"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"}
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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infra-blocks/aws-dynamodb",
3
- "version": "0.17.1",
3
+ "version": "0.18.0-alpha.0",
4
4
  "description": "A convenience wrapper over @aws-sdk/client-dynamodb and @aws-sdk/lib-dynamodb.",
5
5
  "keywords": [
6
6
  "aws",