@infra-blocks/aws-dynamodb 0.18.1 → 0.19.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.
@@ -18,4 +18,10 @@ __exportStar(require("./condition.js"), exports);
18
18
  __exportStar(require("./key-condition.js"), exports);
19
19
  __exportStar(require("./operands.js"), exports);
20
20
  __exportStar(require("./update.js"), exports);
21
+ /*
22
+ TODO: In the expression interfaces, a slight QoL improvement would be to assume that
23
+ strings are attribute names by default, and other types are values by default. The user
24
+ always has the option to be explicit. For example, he could write:
25
+ `where(attribute("name")).eq(value(42))` or `where("name").eq(42)`.
26
+ */
21
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/expressions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,gDAA8B;AAC9B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/expressions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,gDAA8B;AAC9B,8CAA4B;AAE5B;;;;;GAKG"}
@@ -18,7 +18,7 @@ export interface IUpdateAction {
18
18
  values: AttributeValues;
19
19
  }): string;
20
20
  }
21
- export type UpdateAction = SetAction;
21
+ export type UpdateAction = SetAction | RemoveAction;
22
22
  export type SetAction = Assignment | PlusAssignment | MinusAssignment;
23
23
  export type SetOperand = Operand | IfNotExistsOperand;
24
24
  declare class Assignment implements IUpdateAction {
@@ -65,6 +65,23 @@ declare class AssignmentBuilder {
65
65
  to(operand: SetOperand): Assignment;
66
66
  }
67
67
  export declare function assign(path: AttributeOperand): AssignmentBuilder;
68
+ export declare class RemoveAction implements IUpdateAction {
69
+ private readonly path;
70
+ private constructor();
71
+ stringify(params: {
72
+ names: AttributeNames;
73
+ values: AttributeValues;
74
+ }): string;
75
+ static from(path: AttributeOperand): RemoveAction;
76
+ }
77
+ /**
78
+ * Returns an action that will remove the specific attribute at the provided path.
79
+ *
80
+ * @param path - The path of the attribute to remove.
81
+ *
82
+ * @returns A {@link RemoveAction} corresponding to the path provided.
83
+ */
84
+ export declare function remove(path: AttributeOperand): RemoveAction;
68
85
  export declare class IfNotExistsOperand implements IOperand {
69
86
  private readonly path;
70
87
  private readonly defaultValue;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IfNotExistsOperand = exports.MinusAssignment = exports.PlusAssignment = exports.UpdateExpression = void 0;
3
+ exports.IfNotExistsOperand = exports.RemoveAction = exports.MinusAssignment = exports.PlusAssignment = exports.UpdateExpression = void 0;
4
4
  exports.assign = assign;
5
+ exports.remove = remove;
5
6
  exports.ifNotExists = ifNotExists;
6
7
  class UpdateExpression {
7
8
  clauses;
@@ -16,6 +17,11 @@ class UpdateExpression {
16
17
  .map((action) => action.stringify({ names, values }))
17
18
  .join(",")}`);
18
19
  }
20
+ if (this.clauses.remove != null) {
21
+ parts.push(`REMOVE ${this.clauses.remove
22
+ .map((action) => action.stringify({ names, values }))
23
+ .join(",")}`);
24
+ }
19
25
  return parts.join("\n");
20
26
  }
21
27
  static from(params) {
@@ -24,12 +30,12 @@ class UpdateExpression {
24
30
  if (action instanceof Assignment ||
25
31
  action instanceof PlusAssignment ||
26
32
  action instanceof MinusAssignment) {
27
- if (clauses.set != null) {
28
- clauses.set.push(action);
29
- }
30
- else {
31
- clauses.set = [action];
32
- }
33
+ clauses.set ??= [];
34
+ clauses.set.push(action);
35
+ }
36
+ else if (action instanceof RemoveAction) {
37
+ clauses.remove ??= [];
38
+ clauses.remove.push(action);
33
39
  }
34
40
  else {
35
41
  throw new Error("unknown action type in update expression");
@@ -39,10 +45,6 @@ class UpdateExpression {
39
45
  }
40
46
  }
41
47
  exports.UpdateExpression = UpdateExpression;
42
- // Note: incrementation works with attribute names and values no prob.
43
- // There can only be one "+" sign.
44
- // Nothing forces the operation to happen on the same attribute. For example: SET x = y + 2 is valid and should
45
- // be supported. Increment should only be a fast track there.
46
48
  class Assignment {
47
49
  path;
48
50
  operand;
@@ -112,6 +114,30 @@ class AssignmentBuilder {
112
114
  function assign(path) {
113
115
  return new AssignmentBuilder(path);
114
116
  }
117
+ class RemoveAction {
118
+ path;
119
+ constructor(path) {
120
+ this.path = path;
121
+ }
122
+ stringify(params) {
123
+ const { names, values } = params;
124
+ return this.path.substitute({ names, values });
125
+ }
126
+ static from(path) {
127
+ return new RemoveAction(path);
128
+ }
129
+ }
130
+ exports.RemoveAction = RemoveAction;
131
+ /**
132
+ * Returns an action that will remove the specific attribute at the provided path.
133
+ *
134
+ * @param path - The path of the attribute to remove.
135
+ *
136
+ * @returns A {@link RemoveAction} corresponding to the path provided.
137
+ */
138
+ function remove(path) {
139
+ return RemoveAction.from(path);
140
+ }
115
141
  class IfNotExistsOperand {
116
142
  path;
117
143
  defaultValue;
@@ -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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"}
@@ -2,4 +2,10 @@ export * from "./condition.js";
2
2
  export * from "./key-condition.js";
3
3
  export * from "./operands.js";
4
4
  export * from "./update.js";
5
+ /*
6
+ TODO: In the expression interfaces, a slight QoL improvement would be to assume that
7
+ strings are attribute names by default, and other types are values by default. The user
8
+ always has the option to be explicit. For example, he could write:
9
+ `where(attribute("name")).eq(value(42))` or `where("name").eq(42)`.
10
+ */
5
11
  //# sourceMappingURL=index.js.map
@@ -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,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
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,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAE5B;;;;;GAKG"}
@@ -18,7 +18,7 @@ export interface IUpdateAction {
18
18
  values: AttributeValues;
19
19
  }): string;
20
20
  }
21
- export type UpdateAction = SetAction;
21
+ export type UpdateAction = SetAction | RemoveAction;
22
22
  export type SetAction = Assignment | PlusAssignment | MinusAssignment;
23
23
  export type SetOperand = Operand | IfNotExistsOperand;
24
24
  declare class Assignment implements IUpdateAction {
@@ -65,6 +65,23 @@ declare class AssignmentBuilder {
65
65
  to(operand: SetOperand): Assignment;
66
66
  }
67
67
  export declare function assign(path: AttributeOperand): AssignmentBuilder;
68
+ export declare class RemoveAction implements IUpdateAction {
69
+ private readonly path;
70
+ private constructor();
71
+ stringify(params: {
72
+ names: AttributeNames;
73
+ values: AttributeValues;
74
+ }): string;
75
+ static from(path: AttributeOperand): RemoveAction;
76
+ }
77
+ /**
78
+ * Returns an action that will remove the specific attribute at the provided path.
79
+ *
80
+ * @param path - The path of the attribute to remove.
81
+ *
82
+ * @returns A {@link RemoveAction} corresponding to the path provided.
83
+ */
84
+ export declare function remove(path: AttributeOperand): RemoveAction;
68
85
  export declare class IfNotExistsOperand implements IOperand {
69
86
  private readonly path;
70
87
  private readonly defaultValue;
@@ -11,6 +11,11 @@ export class UpdateExpression {
11
11
  .map((action) => action.stringify({ names, values }))
12
12
  .join(",")}`);
13
13
  }
14
+ if (this.clauses.remove != null) {
15
+ parts.push(`REMOVE ${this.clauses.remove
16
+ .map((action) => action.stringify({ names, values }))
17
+ .join(",")}`);
18
+ }
14
19
  return parts.join("\n");
15
20
  }
16
21
  static from(params) {
@@ -19,12 +24,12 @@ export class UpdateExpression {
19
24
  if (action instanceof Assignment ||
20
25
  action instanceof PlusAssignment ||
21
26
  action instanceof MinusAssignment) {
22
- if (clauses.set != null) {
23
- clauses.set.push(action);
24
- }
25
- else {
26
- clauses.set = [action];
27
- }
27
+ clauses.set ??= [];
28
+ clauses.set.push(action);
29
+ }
30
+ else if (action instanceof RemoveAction) {
31
+ clauses.remove ??= [];
32
+ clauses.remove.push(action);
28
33
  }
29
34
  else {
30
35
  throw new Error("unknown action type in update expression");
@@ -33,10 +38,6 @@ export class UpdateExpression {
33
38
  return new UpdateExpression(clauses);
34
39
  }
35
40
  }
36
- // Note: incrementation works with attribute names and values no prob.
37
- // There can only be one "+" sign.
38
- // Nothing forces the operation to happen on the same attribute. For example: SET x = y + 2 is valid and should
39
- // be supported. Increment should only be a fast track there.
40
41
  class Assignment {
41
42
  path;
42
43
  operand;
@@ -104,6 +105,29 @@ class AssignmentBuilder {
104
105
  export function assign(path) {
105
106
  return new AssignmentBuilder(path);
106
107
  }
108
+ export class RemoveAction {
109
+ path;
110
+ constructor(path) {
111
+ this.path = path;
112
+ }
113
+ stringify(params) {
114
+ const { names, values } = params;
115
+ return this.path.substitute({ names, values });
116
+ }
117
+ static from(path) {
118
+ return new RemoveAction(path);
119
+ }
120
+ }
121
+ /**
122
+ * Returns an action that will remove the specific attribute at the provided path.
123
+ *
124
+ * @param path - The path of the attribute to remove.
125
+ *
126
+ * @returns A {@link RemoveAction} corresponding to the path provided.
127
+ */
128
+ export function remove(path) {
129
+ return RemoveAction.from(path);
130
+ }
107
131
  export class IfNotExistsOperand {
108
132
  path;
109
133
  defaultValue;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infra-blocks/aws-dynamodb",
3
- "version": "0.18.1",
3
+ "version": "0.19.0-alpha.1",
4
4
  "description": "A convenience wrapper over @aws-sdk/client-dynamodb and @aws-sdk/lib-dynamodb.",
5
5
  "keywords": [
6
6
  "aws",