@infra-blocks/aws-dynamodb 0.21.0-alpha.2 → 0.22.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 (75) hide show
  1. package/lib/cjs/commands/create-table.js +3 -4
  2. package/lib/cjs/commands/create-table.js.map +1 -1
  3. package/lib/cjs/commands/expressions/index.d.ts +1 -1
  4. package/lib/cjs/commands/expressions/index.js +1 -1
  5. package/lib/cjs/commands/expressions/index.js.map +1 -1
  6. package/lib/cjs/commands/expressions/update/action.d.ts +33 -0
  7. package/lib/cjs/commands/expressions/update/action.js +3 -0
  8. package/lib/cjs/commands/expressions/update/action.js.map +1 -0
  9. package/lib/cjs/commands/expressions/update/add.d.ts +40 -0
  10. package/lib/cjs/commands/expressions/update/add.js +45 -0
  11. package/lib/cjs/commands/expressions/update/add.js.map +1 -0
  12. package/lib/cjs/commands/expressions/update/clauses.d.ts +22 -0
  13. package/lib/cjs/commands/expressions/update/clauses.js +50 -0
  14. package/lib/cjs/commands/expressions/update/clauses.js.map +1 -0
  15. package/lib/cjs/commands/expressions/update/delete.d.ts +35 -0
  16. package/lib/cjs/commands/expressions/update/delete.js +43 -0
  17. package/lib/cjs/commands/expressions/update/delete.js.map +1 -0
  18. package/lib/cjs/commands/expressions/update/expression.d.ts +22 -0
  19. package/lib/cjs/commands/expressions/update/expression.js +69 -0
  20. package/lib/cjs/commands/expressions/update/expression.js.map +1 -0
  21. package/lib/cjs/commands/expressions/update/if-not-exists.d.ts +17 -0
  22. package/lib/cjs/commands/expressions/update/if-not-exists.js +22 -0
  23. package/lib/cjs/commands/expressions/update/if-not-exists.js.map +1 -0
  24. package/lib/cjs/commands/expressions/update/index.d.ts +7 -0
  25. package/lib/cjs/commands/expressions/update/index.js +29 -0
  26. package/lib/cjs/commands/expressions/update/index.js.map +1 -0
  27. package/lib/cjs/commands/expressions/update/remove.d.ts +23 -0
  28. package/lib/cjs/commands/expressions/update/remove.js +34 -0
  29. package/lib/cjs/commands/expressions/update/remove.js.map +1 -0
  30. package/lib/cjs/commands/expressions/update/set.d.ts +57 -0
  31. package/lib/cjs/commands/expressions/update/set.js +86 -0
  32. package/lib/cjs/commands/expressions/update/set.js.map +1 -0
  33. package/lib/cjs/commands/put-item.js +4 -5
  34. package/lib/cjs/commands/put-item.js.map +1 -1
  35. package/lib/esm/commands/create-table.js +3 -4
  36. package/lib/esm/commands/create-table.js.map +1 -1
  37. package/lib/esm/commands/expressions/index.d.ts +1 -1
  38. package/lib/esm/commands/expressions/index.js +1 -1
  39. package/lib/esm/commands/expressions/index.js.map +1 -1
  40. package/lib/esm/commands/expressions/update/action.d.ts +33 -0
  41. package/lib/esm/commands/expressions/update/action.js +2 -0
  42. package/lib/esm/commands/expressions/update/action.js.map +1 -0
  43. package/lib/esm/commands/expressions/update/add.d.ts +40 -0
  44. package/lib/esm/commands/expressions/update/add.js +40 -0
  45. package/lib/esm/commands/expressions/update/add.js.map +1 -0
  46. package/lib/esm/commands/expressions/update/clauses.d.ts +22 -0
  47. package/lib/esm/commands/expressions/update/clauses.js +46 -0
  48. package/lib/esm/commands/expressions/update/clauses.js.map +1 -0
  49. package/lib/esm/commands/expressions/update/delete.d.ts +35 -0
  50. package/lib/esm/commands/expressions/update/delete.js +38 -0
  51. package/lib/esm/commands/expressions/update/delete.js.map +1 -0
  52. package/lib/esm/commands/expressions/update/expression.d.ts +22 -0
  53. package/lib/esm/commands/expressions/update/expression.js +65 -0
  54. package/lib/esm/commands/expressions/update/expression.js.map +1 -0
  55. package/lib/esm/commands/expressions/update/if-not-exists.d.ts +17 -0
  56. package/lib/esm/commands/expressions/update/if-not-exists.js +17 -0
  57. package/lib/esm/commands/expressions/update/if-not-exists.js.map +1 -0
  58. package/lib/esm/commands/expressions/update/index.d.ts +7 -0
  59. package/lib/esm/commands/expressions/update/index.js +7 -0
  60. package/lib/esm/commands/expressions/update/index.js.map +1 -0
  61. package/lib/esm/commands/expressions/update/remove.d.ts +23 -0
  62. package/lib/esm/commands/expressions/update/remove.js +29 -0
  63. package/lib/esm/commands/expressions/update/remove.js.map +1 -0
  64. package/lib/esm/commands/expressions/update/set.d.ts +57 -0
  65. package/lib/esm/commands/expressions/update/set.js +79 -0
  66. package/lib/esm/commands/expressions/update/set.js.map +1 -0
  67. package/lib/esm/commands/put-item.js +4 -5
  68. package/lib/esm/commands/put-item.js.map +1 -1
  69. package/package.json +2 -2
  70. package/lib/cjs/commands/expressions/update.d.ts +0 -163
  71. package/lib/cjs/commands/expressions/update.js +0 -258
  72. package/lib/cjs/commands/expressions/update.js.map +0 -1
  73. package/lib/esm/commands/expressions/update.d.ts +0 -163
  74. package/lib/esm/commands/expressions/update.js +0 -243
  75. package/lib/esm/commands/expressions/update.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ import type { AttributeNames } from "../../attributes/names.js";
2
+ import type { AttributeValues } from "../../attributes/values.js";
3
+ import type { AttributeOperand } from "../operands/name.js";
4
+ import type { Operand } from "../operands/type.js";
5
+ import type { IUpdateAction } from "./action.js";
6
+ import type { UpdateExpressionClauses } from "./clauses.js";
7
+ import type { IfNotExistsOperand } from "./if-not-exists.js";
8
+ export type SetAction = SetTo | SetToPlus | SetToMinus;
9
+ export type SetOperand = Operand | IfNotExistsOperand;
10
+ export declare class SetTo implements IUpdateAction {
11
+ private readonly path;
12
+ private readonly operand;
13
+ constructor(params: {
14
+ path: AttributeOperand;
15
+ operand: SetOperand;
16
+ });
17
+ plus(operand: SetOperand): SetToPlus;
18
+ minus(operand: SetOperand): SetToMinus;
19
+ register(clauses: UpdateExpressionClauses): void;
20
+ stringify(params: {
21
+ names: AttributeNames;
22
+ values: AttributeValues;
23
+ }): string;
24
+ }
25
+ export declare class SetToPlus implements IUpdateAction {
26
+ private readonly inner;
27
+ private readonly operand;
28
+ constructor(params: {
29
+ inner: SetTo;
30
+ operand: SetOperand;
31
+ });
32
+ register(clauses: UpdateExpressionClauses): void;
33
+ stringify(params: {
34
+ names: AttributeNames;
35
+ values: AttributeValues;
36
+ }): string;
37
+ }
38
+ export declare class SetToMinus implements IUpdateAction {
39
+ private readonly inner;
40
+ private readonly operand;
41
+ constructor(params: {
42
+ inner: SetTo;
43
+ operand: SetOperand;
44
+ });
45
+ register(clauses: UpdateExpressionClauses): void;
46
+ stringify(params: {
47
+ names: AttributeNames;
48
+ values: AttributeValues;
49
+ }): string;
50
+ }
51
+ declare class SetToBuilder {
52
+ private readonly path;
53
+ constructor(path: AttributeOperand);
54
+ to(operand: SetOperand): SetTo;
55
+ }
56
+ export declare function set(path: AttributeOperand): SetToBuilder;
57
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetToMinus = exports.SetToPlus = exports.SetTo = void 0;
4
+ exports.set = set;
5
+ class SetTo {
6
+ path;
7
+ operand;
8
+ constructor(params) {
9
+ const { path, operand } = params;
10
+ this.path = path;
11
+ this.operand = operand;
12
+ }
13
+ plus(operand) {
14
+ return new SetToPlus({ inner: this, operand });
15
+ }
16
+ minus(operand) {
17
+ return new SetToMinus({ inner: this, operand });
18
+ }
19
+ register(clauses) {
20
+ clauses.pushSetAction(this);
21
+ }
22
+ stringify(params) {
23
+ const { names, values } = params;
24
+ return `${this.path.substitute({ names })} = ${this.operand.substitute({
25
+ names,
26
+ values,
27
+ })}`;
28
+ }
29
+ }
30
+ exports.SetTo = SetTo;
31
+ class SetToPlus {
32
+ inner;
33
+ operand;
34
+ constructor(params) {
35
+ const { inner, operand } = params;
36
+ this.inner = inner;
37
+ this.operand = operand;
38
+ }
39
+ register(clauses) {
40
+ clauses.pushSetAction(this);
41
+ }
42
+ stringify(params) {
43
+ const { names, values } = params;
44
+ return `${this.inner.stringify({ names, values })} + ${this.operand.substitute({
45
+ names,
46
+ values,
47
+ })}`;
48
+ }
49
+ }
50
+ exports.SetToPlus = SetToPlus;
51
+ class SetToMinus {
52
+ inner;
53
+ operand;
54
+ constructor(params) {
55
+ const { inner, operand } = params;
56
+ this.inner = inner;
57
+ this.operand = operand;
58
+ }
59
+ register(clauses) {
60
+ clauses.pushSetAction(this);
61
+ }
62
+ stringify(params) {
63
+ const { names, values } = params;
64
+ return `${this.inner.stringify({ names, values })} - ${this.operand.substitute({
65
+ names,
66
+ values,
67
+ })}`;
68
+ }
69
+ }
70
+ exports.SetToMinus = SetToMinus;
71
+ class SetToBuilder {
72
+ path;
73
+ constructor(path) {
74
+ this.path = path;
75
+ }
76
+ to(operand) {
77
+ return new SetTo({ path: this.path, operand });
78
+ }
79
+ }
80
+ // TODO: increment/decrement utilities built on top of the assignments.
81
+ // TODO: review API for something more streamlined.... Imagine something like:
82
+ // set(attribute(<name>), value(<value>)) or set(attribute(<name>), value(<first>), "+", value(<second>))
83
+ function set(path) {
84
+ return new SetToBuilder(path);
85
+ }
86
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/set.ts"],"names":[],"mappings":"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"}
@@ -15,20 +15,19 @@ class PutItem {
15
15
  this.condition = condition;
16
16
  }
17
17
  toAwsCommandInput() {
18
- const { table, item, condition } = this;
19
18
  const input = {
20
- TableName: table,
21
- Item: item,
19
+ TableName: this.table,
20
+ Item: this.item,
22
21
  };
23
22
  // Expression attribute names and values can only be specified when a condition is provided,
24
23
  // which is optional.
25
- if (condition == null) {
24
+ if (this.condition == null) {
26
25
  return input;
27
26
  }
28
27
  const names = names_js_1.AttributeNames.create();
29
28
  const values = values_js_1.AttributeValues.create();
30
29
  // Ask the expression to stringify itself, applying the substitutions by itself.
31
- const expression = condition.stringify({ names, values });
30
+ const expression = this.condition.stringify({ names, values });
32
31
  return {
33
32
  ...input,
34
33
  ConditionExpression: expression,
@@ -1 +1 @@
1
- {"version":3,"file":"put-item.js","sourceRoot":"","sources":["../../../src/commands/put-item.ts"],"names":[],"mappings":";;;AAAA,wDAAyE;AAEzE,oDAAuD;AACvD,sDAAyD;AAUzD,MAAa,OAAO;IACD,KAAK,CAAS;IACd,IAAI,CAAa;IACjB,SAAS,CAAa;IAEvC,YAAoB,MAAqB;QACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAExC,MAAM,KAAK,GAAoB;YAC7B,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI;SACX,CAAC;QAEF,4FAA4F;QAC5F,qBAAqB;QACrB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACxC,gFAAgF;QAChF,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1D,OAAO;YACL,GAAG,KAAK;YACR,mBAAmB,EAAE,UAAU;YAC/B,wBAAwB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAClD,yBAAyB,EAAE,MAAM,CAAC,gBAAgB,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,yBAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAqB;QAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF;AA9CD,0BA8CC"}
1
+ {"version":3,"file":"put-item.js","sourceRoot":"","sources":["../../../src/commands/put-item.ts"],"names":[],"mappings":";;;AAAA,wDAAyE;AAEzE,oDAAuD;AACvD,sDAAyD;AAUzD,MAAa,OAAO;IACD,KAAK,CAAS;IACd,IAAI,CAAa;IACjB,SAAS,CAAa;IAEvC,YAAoB,MAAqB;QACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,MAAM,KAAK,GAAoB;YAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,4FAA4F;QAC5F,qBAAqB;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACxC,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/D,OAAO;YACL,GAAG,KAAK;YACR,mBAAmB,EAAE,UAAU;YAC/B,wBAAwB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAClD,yBAAyB,EAAE,MAAM,CAAC,gBAAgB,EAAE;SACrD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,yBAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAqB;QAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF;AA5CD,0BA4CC"}
@@ -12,7 +12,6 @@ export class CreateTable {
12
12
  this.lsis = lsis;
13
13
  }
14
14
  toAwsCommandInput() {
15
- const { name } = this;
16
15
  const attributeDefinitions = new Map();
17
16
  const primaryKeySchema = keySchema({
18
17
  attributeDefinitions,
@@ -25,7 +24,7 @@ export class CreateTable {
25
24
  AttributeName: name,
26
25
  AttributeType: type,
27
26
  })),
28
- TableName: name,
27
+ TableName: this.name,
29
28
  KeySchema: primaryKeySchema,
30
29
  GlobalSecondaryIndexes: globalSecondaryIndexes.length > 0 ? globalSecondaryIndexes : undefined,
31
30
  LocalSecondaryIndexes: localSecondaryIndexes.length > 0 ? localSecondaryIndexes : undefined,
@@ -36,7 +35,7 @@ export class CreateTable {
36
35
  return new CreateTableCommand(this.toAwsCommandInput());
37
36
  }
38
37
  gsiInput(attributeDefinitions) {
39
- const { gsis = {} } = this;
38
+ const gsis = this.gsis ?? {};
40
39
  const globalSecondaryIndexes = [];
41
40
  for (const [indexName, field] of Object.entries(gsis)) {
42
41
  const ks = keySchema({
@@ -54,7 +53,7 @@ export class CreateTable {
54
53
  return globalSecondaryIndexes;
55
54
  }
56
55
  lsiInput(attributeDefinitions) {
57
- const { lsis = {} } = this;
56
+ const lsis = this.lsis ?? {};
58
57
  const localSecondaryIndexes = [];
59
58
  for (const [indexName, field] of Object.entries(lsis)) {
60
59
  const ks = keySchema({
@@ -1 +1 @@
1
- {"version":3,"file":"create-table.js","sourceRoot":"","sources":["../../../src/commands/create-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-table.js","sourceRoot":"","sources":["../../../src/commands/create-table.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export * from "./condition.js";
2
2
  export * from "./key-condition.js";
3
3
  export * from "./operands/index.js";
4
- export * from "./update.js";
4
+ export * from "./update/index.js";
@@ -1,7 +1,7 @@
1
1
  export * from "./condition.js";
2
2
  export * from "./key-condition.js";
3
3
  export * from "./operands/index.js";
4
- export * from "./update.js";
4
+ export * from "./update/index.js";
5
5
  /*
6
6
  TODO: In the expression interfaces, a slight QoL improvement would be to assume that
7
7
  strings are attribute names by default, and other types are values by default. The user
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/expressions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAE5B;;;;;GAKG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/expressions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAElC;;;;;GAKG"}
@@ -0,0 +1,33 @@
1
+ import type { AttributeNames } from "../../attributes/names.js";
2
+ import type { AttributeValues } from "../../attributes/values.js";
3
+ import type { AddAction } from "./add.js";
4
+ import type { UpdateExpressionClauses } from "./clauses.js";
5
+ import type { DeleteAction } from "./delete.js";
6
+ import type { RemoveAction } from "./remove.js";
7
+ import type { SetAction } from "./set.js";
8
+ export interface IUpdateAction {
9
+ /**
10
+ * Registers the action within the {@link UpdateExpressionClauses}.
11
+ *
12
+ * @param clauses - The clauses to register the action in.
13
+ */
14
+ register(clauses: UpdateExpressionClauses): void;
15
+ /**
16
+ * Stringifies the action within the clause.
17
+ *
18
+ * For example, if the action is a `SetAction`, it will be invoked as such:
19
+ * `SET ${action.stringify({names, values})}`. So the clause identifier is managed
20
+ * by the caller.
21
+ *
22
+ * @param params.names - The attribute names to substitute in the action.
23
+ * @param params.values - The attribute values to substitute in the action.
24
+ */
25
+ stringify(params: {
26
+ names: AttributeNames;
27
+ values: AttributeValues;
28
+ }): string;
29
+ }
30
+ /**
31
+ * This type aggregates all the possible update actions that can be performed.
32
+ */
33
+ export type UpdateAction = AddAction | DeleteAction | RemoveAction | SetAction;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/action.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import type { AttributeValueNumber, AttributeValueSet } from "../../../types.js";
2
+ import type { AttributeNames } from "../../attributes/names.js";
3
+ import type { AttributeValues } from "../../attributes/values.js";
4
+ import type { AttributeOperand } from "../operands/name.js";
5
+ import type { ValueOperand } from "../operands/value.js";
6
+ import type { IUpdateAction, UpdateAction } from "./action.js";
7
+ import type { UpdateExpressionClauses } from "./clauses.js";
8
+ type NumberOrSet = AttributeValueNumber | AttributeValueSet;
9
+ export declare class AddAction implements IUpdateAction {
10
+ private readonly path;
11
+ private readonly value;
12
+ private constructor();
13
+ register(clauses: UpdateExpressionClauses): void;
14
+ stringify(params: {
15
+ names: AttributeNames;
16
+ values: AttributeValues;
17
+ }): string;
18
+ static from(params: {
19
+ path: AttributeOperand;
20
+ value: ValueOperand<NumberOrSet>;
21
+ }): AddAction;
22
+ }
23
+ /**
24
+ * Returns an action that will add the provided value to the attribute at the specified path.
25
+ *
26
+ * What adding means depends on the types of the operands:p
27
+ * - If both the attribute and the value are numbers, then an increment operation is performed.
28
+ * - If both the attribute and the value are sets, then a concatenation is performed.
29
+ *
30
+ * This action only supports numbers and sets as values.
31
+ *
32
+ * @param path - The attribute path to modify.
33
+ * @param value - The value to add to the attribute.
34
+ *
35
+ * @returns An {@link AddAction} that will add the value to the attribute at the specified path.
36
+ *
37
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD
38
+ */
39
+ export declare function add(path: AttributeOperand, value: ValueOperand<NumberOrSet>): UpdateAction;
40
+ export {};
@@ -0,0 +1,40 @@
1
+ // Note: the first operand *must* be an attribute name, and the second operand *must* be a value.
2
+ export class AddAction {
3
+ path;
4
+ value;
5
+ constructor(params) {
6
+ const { path, value } = params;
7
+ this.path = path;
8
+ this.value = value;
9
+ }
10
+ register(clauses) {
11
+ clauses.pushAddAction(this);
12
+ }
13
+ stringify(params) {
14
+ const { names, values } = params;
15
+ return `${this.path.substitute({ names })} ${this.value.substitute({ values })}`;
16
+ }
17
+ static from(params) {
18
+ return new AddAction(params);
19
+ }
20
+ }
21
+ /**
22
+ * Returns an action that will add the provided value to the attribute at the specified path.
23
+ *
24
+ * What adding means depends on the types of the operands:p
25
+ * - If both the attribute and the value are numbers, then an increment operation is performed.
26
+ * - If both the attribute and the value are sets, then a concatenation is performed.
27
+ *
28
+ * This action only supports numbers and sets as values.
29
+ *
30
+ * @param path - The attribute path to modify.
31
+ * @param value - The value to add to the attribute.
32
+ *
33
+ * @returns An {@link AddAction} that will add the value to the attribute at the specified path.
34
+ *
35
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD
36
+ */
37
+ export function add(path, value) {
38
+ return AddAction.from({ path, value });
39
+ }
40
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/add.ts"],"names":[],"mappings":"AAaA,iGAAiG;AACjG,MAAM,OAAO,SAAS;IACH,IAAI,CAAmB;IACvB,KAAK,CAA4B;IAElD,YAAoB,MAGnB;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,OAAgC;QACvC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,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,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAGX;QACC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,UAAU,GAAG,CACjB,IAAsB,EACtB,KAAgC;IAEhC,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { UpdateAction } from "./action.js";
2
+ import type { AddAction } from "./add.js";
3
+ import type { DeleteAction } from "./delete.js";
4
+ import type { RemoveAction } from "./remove.js";
5
+ import type { SetAction } from "./set.js";
6
+ export declare class UpdateExpressionClauses {
7
+ private add?;
8
+ private delete?;
9
+ private remove?;
10
+ private set?;
11
+ private constructor();
12
+ getAddActions(): AddAction[] | undefined;
13
+ getDeleteActions(): DeleteAction[] | undefined;
14
+ getRemoveActions(): RemoveAction[] | undefined;
15
+ getSetActions(): SetAction[] | undefined;
16
+ pushAddAction(action: AddAction): void;
17
+ pushDeleteAction(action: DeleteAction): void;
18
+ pushRemoveAction(action: RemoveAction): void;
19
+ pushSetAction(action: SetAction): void;
20
+ static create(): UpdateExpressionClauses;
21
+ static from(params: ReadonlyArray<UpdateAction>): UpdateExpressionClauses;
22
+ }
@@ -0,0 +1,46 @@
1
+ export class UpdateExpressionClauses {
2
+ add;
3
+ delete;
4
+ remove;
5
+ set;
6
+ constructor() { }
7
+ getAddActions() {
8
+ return this.add;
9
+ }
10
+ getDeleteActions() {
11
+ return this.delete;
12
+ }
13
+ getRemoveActions() {
14
+ return this.remove;
15
+ }
16
+ getSetActions() {
17
+ return this.set;
18
+ }
19
+ pushAddAction(action) {
20
+ this.add ??= [];
21
+ this.add.push(action);
22
+ }
23
+ pushDeleteAction(action) {
24
+ this.delete ??= [];
25
+ this.delete.push(action);
26
+ }
27
+ pushRemoveAction(action) {
28
+ this.remove ??= [];
29
+ this.remove.push(action);
30
+ }
31
+ pushSetAction(action) {
32
+ this.set ??= [];
33
+ this.set.push(action);
34
+ }
35
+ static create() {
36
+ return new UpdateExpressionClauses();
37
+ }
38
+ static from(params) {
39
+ const clauses = UpdateExpressionClauses.create();
40
+ for (const action of params) {
41
+ action.register(clauses);
42
+ }
43
+ return clauses;
44
+ }
45
+ }
46
+ //# sourceMappingURL=clauses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clauses.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/clauses.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,uBAAuB;IAC1B,GAAG,CAAe;IAClB,MAAM,CAAkB;IACxB,MAAM,CAAkB;IACxB,GAAG,CAAe;IAE1B,gBAAuB,CAAC;IAExB,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,MAAiB;QAC7B,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,MAAiB;QAC7B,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,uBAAuB,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAmC;QAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import type { AttributeValueSet } from "../../../types.js";
2
+ import type { AttributeNames } from "../../attributes/names.js";
3
+ import type { AttributeValues } from "../../attributes/values.js";
4
+ import type { AttributeOperand } from "../operands/name.js";
5
+ import type { ValueOperand } from "../operands/value.js";
6
+ import type { IUpdateAction, UpdateAction } from "./action.js";
7
+ import type { UpdateExpressionClauses } from "./clauses.js";
8
+ export declare class DeleteAction implements IUpdateAction {
9
+ private readonly path;
10
+ private readonly value;
11
+ private constructor();
12
+ register(clauses: UpdateExpressionClauses): void;
13
+ stringify(params: {
14
+ names: AttributeNames;
15
+ values: AttributeValues;
16
+ }): string;
17
+ static from(params: {
18
+ path: AttributeOperand;
19
+ value: ValueOperand<AttributeValueSet>;
20
+ }): DeleteAction;
21
+ }
22
+ /**
23
+ * Returns an action that will delete the provided subset from the attribute at the specified path.
24
+ *
25
+ * This operation only supports sets as values. The resulting set will be the original set minus the
26
+ * provided subset.
27
+ *
28
+ * @param path - The attribute path to modify.
29
+ * @param value - The value to remove from the attribute.
30
+ *
31
+ * @returns A {@link DeleteAction} that will remove the subset from the attribute.
32
+ *
33
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.DELETE
34
+ */
35
+ export declare function deleteFrom(path: AttributeOperand, value: ValueOperand<AttributeValueSet>): UpdateAction;
@@ -0,0 +1,38 @@
1
+ export class DeleteAction {
2
+ path;
3
+ value;
4
+ constructor(params) {
5
+ const { path, value } = params;
6
+ this.path = path;
7
+ this.value = value;
8
+ }
9
+ register(clauses) {
10
+ clauses.pushDeleteAction(this);
11
+ }
12
+ stringify(params) {
13
+ const { names, values } = params;
14
+ return `${this.path.substitute({ names })} ${this.value.substitute({
15
+ values,
16
+ })}`;
17
+ }
18
+ static from(params) {
19
+ return new DeleteAction(params);
20
+ }
21
+ }
22
+ /**
23
+ * Returns an action that will delete the provided subset from the attribute at the specified path.
24
+ *
25
+ * This operation only supports sets as values. The resulting set will be the original set minus the
26
+ * provided subset.
27
+ *
28
+ * @param path - The attribute path to modify.
29
+ * @param value - The value to remove from the attribute.
30
+ *
31
+ * @returns A {@link DeleteAction} that will remove the subset from the attribute.
32
+ *
33
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.DELETE
34
+ */
35
+ export function deleteFrom(path, value) {
36
+ return DeleteAction.from({ path, value });
37
+ }
38
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/delete.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,YAAY;IACN,IAAI,CAAmB;IACvB,KAAK,CAAkC;IAExD,YAAoB,MAGnB;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,OAAgC;QACvC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjC,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,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACjE,MAAM;SACP,CAAC,EAAE,CAAC;IACP,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAGX;QACC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AAEH,MAAM,UAAU,UAAU,CACxB,IAAsB,EACtB,KAAsC;IAEtC,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { AttributeNames } from "../../attributes/names.js";
2
+ import type { AttributeValues } from "../../attributes/values.js";
3
+ import type { IExpression } from "../expression.js";
4
+ import type { UpdateAction } from "./action.js";
5
+ export type UpdateExpressionParams = ReadonlyArray<UpdateAction>;
6
+ /**
7
+ *
8
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
9
+ */
10
+ export declare class UpdateExpression implements IExpression {
11
+ private readonly clauses;
12
+ private constructor();
13
+ stringify(params: {
14
+ names: AttributeNames;
15
+ values: AttributeValues;
16
+ }): string;
17
+ private pushAddActions;
18
+ private pushDeleteActions;
19
+ private pushRemoveActions;
20
+ private pushSetActions;
21
+ static from(params: UpdateExpressionParams): UpdateExpression;
22
+ }
@@ -0,0 +1,65 @@
1
+ import { UpdateExpressionClauses } from "./clauses.js";
2
+ /**
3
+ *
4
+ * @see https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
5
+ */
6
+ export class UpdateExpression {
7
+ clauses;
8
+ constructor(clauses) {
9
+ this.clauses = clauses;
10
+ }
11
+ stringify(params) {
12
+ const { names, values } = params;
13
+ const parts = [];
14
+ this.pushAddActions({ parts, names, values });
15
+ this.pushDeleteActions({ parts, names, values });
16
+ this.pushRemoveActions({ parts, names });
17
+ this.pushSetActions({ parts, names, values });
18
+ return parts.join("\n");
19
+ }
20
+ pushAddActions(params) {
21
+ const { parts, names, values } = params;
22
+ const actions = this.clauses.getAddActions();
23
+ if (actions == null || actions.length === 0) {
24
+ return;
25
+ }
26
+ parts.push(`ADD ${actions
27
+ .map((action) => action.stringify({ names, values }))
28
+ .join(",")}`);
29
+ }
30
+ pushDeleteActions(params) {
31
+ const { parts, names, values } = params;
32
+ const actions = this.clauses.getDeleteActions();
33
+ if (actions == null || actions.length === 0) {
34
+ return;
35
+ }
36
+ parts.push(`DELETE ${actions
37
+ .map((action) => action.stringify({ names, values }))
38
+ .join(",")}`);
39
+ }
40
+ pushRemoveActions(params) {
41
+ const { parts, names } = params;
42
+ const actions = this.clauses.getRemoveActions();
43
+ if (actions == null || actions.length === 0) {
44
+ return;
45
+ }
46
+ parts.push(`REMOVE ${actions
47
+ .map((action) => action.stringify({ names }))
48
+ .join(",")}`);
49
+ }
50
+ pushSetActions(params) {
51
+ const { parts, names, values } = params;
52
+ const actions = this.clauses.getSetActions();
53
+ if (actions == null || actions.length === 0) {
54
+ return;
55
+ }
56
+ parts.push(`SET ${actions
57
+ .map((action) => action.stringify({ names, values }))
58
+ .join(",")}`);
59
+ }
60
+ static from(params) {
61
+ const clauses = UpdateExpressionClauses.from(params);
62
+ return new UpdateExpression(clauses);
63
+ }
64
+ }
65
+ //# sourceMappingURL=expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/expression.ts"],"names":[],"mappings":"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"}