@infra-blocks/aws-dynamodb 0.41.1-alpha.0 → 0.42.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.
- package/lib/cjs/commands/expressions/update/set.js.map +1 -1
- package/lib/cjs/commands/update-item.d.ts +4 -1
- package/lib/cjs/commands/update-item.js +6 -7
- package/lib/cjs/commands/update-item.js.map +1 -1
- package/lib/cjs/commands/write-transaction.d.ts +19 -1
- package/lib/cjs/commands/write-transaction.js +52 -3
- package/lib/cjs/commands/write-transaction.js.map +1 -1
- package/lib/esm/commands/expressions/update/set.js.map +1 -1
- package/lib/esm/commands/update-item.d.ts +4 -1
- package/lib/esm/commands/update-item.js +7 -8
- package/lib/esm/commands/update-item.js.map +1 -1
- package/lib/esm/commands/write-transaction.d.ts +19 -1
- package/lib/esm/commands/write-transaction.js +52 -3
- package/lib/esm/commands/write-transaction.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/set.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/set.ts"],"names":[],"mappings":";;;AAuEA,kBAYC;AAhFD,iDAAyD;AAqBzD,MAAa,SAAS;IACH,MAAM,CAAkB;IAEzC,YAAoB,MAAuB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,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,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CACxF;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;QACJ,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC9D,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CACxE;gBACE,KAAK;gBACL,MAAM;aACP,CACF,EAAE,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAuB;QACjC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF;AApCD,8BAoCC;AAWD,SAAgB,GAAG,CACjB,OAAgB,EAChB,OAAmB,EACnB,QAAsB,EACtB,aAA0B;IAE1B,OAAO,SAAS,CAAC,IAAI,CAAC;QACpB,IAAI,EAAE,cAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,OAAO;QACP,QAAQ;QACR,aAAa;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type UpdateCommandInput as NativeUpdateCommandInput, UpdateCommand } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { WithRequired } from "@infra-blocks/types";
|
|
2
3
|
import type { Attributes } from "../types.js";
|
|
3
4
|
import { type ConditionParams, type UpdateExpressionParams } from "./expressions/index.js";
|
|
4
5
|
import type { Command } from "./types.js";
|
|
6
|
+
type UpdateCommandInput = WithRequired<NativeUpdateCommandInput, "UpdateExpression">;
|
|
5
7
|
export interface UpdateItemParams {
|
|
6
8
|
table: string;
|
|
7
9
|
key: Attributes;
|
|
@@ -15,3 +17,4 @@ export declare class UpdateItem implements Command<UpdateCommandInput, UpdateCom
|
|
|
15
17
|
toAwsCommand(): UpdateCommand;
|
|
16
18
|
static from(params: UpdateItemParams): UpdateItem;
|
|
17
19
|
}
|
|
20
|
+
export {};
|
|
@@ -13,17 +13,16 @@ class UpdateItem {
|
|
|
13
13
|
}
|
|
14
14
|
toAwsCommandInput() {
|
|
15
15
|
const { table, key, condition, update } = this.params;
|
|
16
|
+
const names = names_js_1.AttributeNames.create();
|
|
17
|
+
const values = values_js_1.AttributeValues.create();
|
|
16
18
|
const input = {
|
|
17
19
|
TableName: table,
|
|
18
20
|
Key: key,
|
|
21
|
+
UpdateExpression: index_js_1.UpdateExpression.from(update).stringify({
|
|
22
|
+
names,
|
|
23
|
+
values,
|
|
24
|
+
}),
|
|
19
25
|
};
|
|
20
|
-
const names = names_js_1.AttributeNames.create();
|
|
21
|
-
const values = values_js_1.AttributeValues.create();
|
|
22
|
-
const updateExpression = index_js_1.UpdateExpression.from(update).stringify({
|
|
23
|
-
names,
|
|
24
|
-
values,
|
|
25
|
-
});
|
|
26
|
-
input.UpdateExpression = updateExpression;
|
|
27
26
|
// If there is no condition, we know that the names and values are finalized and
|
|
28
27
|
// we are ready to return the payload.
|
|
29
28
|
if (condition == null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":";;;AAAA,wDAG+B;AAG/B,oDAAuD;AACvD,sDAAyD;AACzD,yEAA4E;AAC5E,qDAIgC;AAyBhC,MAAa,UAAU;IACJ,MAAM,CAAmB;IAE1C,YAAoB,MAAwB;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEtD,MAAM,KAAK,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;YACR,gBAAgB,EAAE,2BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;gBACxD,KAAK;gBACL,MAAM;aACP,CAAC;SACH,CAAC;QAEF,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,IAAA,mCAAmB,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YACnE,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QACH,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;AA/CD,gCA+CC"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { TransactWriteCommand, type TransactWriteCommandInput } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { Attributes } from "../types.js";
|
|
3
|
+
import { type DeleteItemParams } from "./delete-item.js";
|
|
4
|
+
import type { ConditionParams } from "./expressions/index.js";
|
|
2
5
|
import { type PutItemParams } from "./put-item.js";
|
|
3
6
|
import type { Command } from "./types.js";
|
|
7
|
+
import { type UpdateItemParams } from "./update-item.js";
|
|
8
|
+
export type ConditionCheckParams = {
|
|
9
|
+
table: string;
|
|
10
|
+
key: Attributes;
|
|
11
|
+
condition: ConditionParams;
|
|
12
|
+
};
|
|
13
|
+
export type WriteTransactionAction = {
|
|
14
|
+
put: PutItemParams;
|
|
15
|
+
} | {
|
|
16
|
+
update: UpdateItemParams;
|
|
17
|
+
} | {
|
|
18
|
+
delete: DeleteItemParams;
|
|
19
|
+
} | {
|
|
20
|
+
conditionCheck: ConditionCheckParams;
|
|
21
|
+
};
|
|
4
22
|
export interface WriteTransactionParams {
|
|
5
|
-
writes:
|
|
23
|
+
writes: WriteTransactionAction[];
|
|
6
24
|
}
|
|
7
25
|
export declare class WriteTransaction implements Command<TransactWriteCommandInput, TransactWriteCommand> {
|
|
8
26
|
private readonly writes;
|
|
@@ -2,7 +2,58 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WriteTransaction = void 0;
|
|
4
4
|
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
const types_1 = require("@infra-blocks/types");
|
|
6
|
+
const names_js_1 = require("./attributes/names.js");
|
|
7
|
+
const values_js_1 = require("./attributes/values.js");
|
|
8
|
+
const delete_item_js_1 = require("./delete-item.js");
|
|
9
|
+
const expression_js_1 = require("./expressions/condition/expression.js");
|
|
5
10
|
const put_item_js_1 = require("./put-item.js");
|
|
11
|
+
const update_item_js_1 = require("./update-item.js");
|
|
12
|
+
const ConditionCheck = {
|
|
13
|
+
toAwsCommandInput(params) {
|
|
14
|
+
const { table, key, condition } = params;
|
|
15
|
+
const names = names_js_1.AttributeNames.create();
|
|
16
|
+
const values = values_js_1.AttributeValues.create();
|
|
17
|
+
// Ask the expression to stringify itself, applying the substitutions by itself.
|
|
18
|
+
const expression = (0, expression_js_1.conditionExpression)(condition).stringify({
|
|
19
|
+
names,
|
|
20
|
+
values,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
TableName: table,
|
|
24
|
+
Key: key,
|
|
25
|
+
ConditionExpression: expression,
|
|
26
|
+
ExpressionAttributeNames: names.getSubstitutions(),
|
|
27
|
+
ExpressionAttributeValues: values.getSubstitutions(),
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const WriteTransactionAction = {
|
|
32
|
+
toAwsCommandInput(write) {
|
|
33
|
+
if ("put" in write) {
|
|
34
|
+
return {
|
|
35
|
+
Put: put_item_js_1.PutItem.from(write.put).toAwsCommandInput(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if ("update" in write) {
|
|
39
|
+
return {
|
|
40
|
+
Update: update_item_js_1.UpdateItem.from(write.update).toAwsCommandInput(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if ("delete" in write) {
|
|
44
|
+
return {
|
|
45
|
+
Delete: delete_item_js_1.DeleteItem.from(write.delete).toAwsCommandInput(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if ("conditionCheck" in write) {
|
|
49
|
+
return {
|
|
50
|
+
ConditionCheck: ConditionCheck.toAwsCommandInput(write.conditionCheck),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
(0, types_1.unreachable)(write);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
// TODO: static tuple typing on result. I.e, if the first item is a put, the first result should be a put output you feel?.
|
|
6
57
|
class WriteTransaction {
|
|
7
58
|
writes;
|
|
8
59
|
constructor(params) {
|
|
@@ -11,9 +62,7 @@ class WriteTransaction {
|
|
|
11
62
|
}
|
|
12
63
|
toAwsCommandInput() {
|
|
13
64
|
return {
|
|
14
|
-
TransactItems: this.writes.map(
|
|
15
|
-
Put: put_item_js_1.PutItem.from(item).toAwsCommandInput(),
|
|
16
|
-
})),
|
|
65
|
+
TransactItems: this.writes.map(WriteTransactionAction.toAwsCommandInput),
|
|
17
66
|
};
|
|
18
67
|
}
|
|
19
68
|
toAwsCommand() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-transaction.js","sourceRoot":"","sources":["../../../src/commands/write-transaction.ts"],"names":[],"mappings":";;;AAAA,wDAG+B;AAC/B,+
|
|
1
|
+
{"version":3,"file":"write-transaction.js","sourceRoot":"","sources":["../../../src/commands/write-transaction.ts"],"names":[],"mappings":";;;AAAA,wDAG+B;AAC/B,+CAAsE;AAEtE,oDAAuD;AACvD,sDAAyD;AACzD,qDAAqE;AACrE,yEAA4E;AAE5E,+CAA4D;AAE5D,qDAAqE;AAIrE,MAAM,cAAc,GAAG;IACrB,iBAAiB,CAAC,MAA4B;QAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEzC,MAAM,KAAK,GAAG,yBAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,2BAAe,CAAC,MAAM,EAAE,CAAC;QACxC,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAA,mCAAmB,EAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YAC1D,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;YACR,mBAAmB,EAAE,UAAU;YAC/B,wBAAwB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAClD,yBAAyB,EAAE,MAAM,CAAC,gBAAgB,EAAE;SACrD,CAAC;IACJ,CAAC;CACF,CAAC;AAMF,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB,CAAC,KAA6B;QAC7C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,OAAO;gBACL,GAAG,EAAE,qBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE;aACjD,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,2BAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,2BAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;YAC9B,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC;aACvE,CAAC;QACJ,CAAC;QACD,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;IACrB,CAAC;CACF,CAAC;AAkBF,2HAA2H;AAC3H,MAAa,gBAAgB;IAGV,MAAM,CAA2B;IAElD,YAAoB,MAA8B;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,mCAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAA8B;QACxC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAvBD,4CAuBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAgB,MAAM,qBAAqB,CAAC;AAqBzD,MAAM,OAAO,SAAS;IACH,MAAM,CAAkB;IAEzC,YAAoB,MAAuB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,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,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CACxF;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;QACJ,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC9D,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CACxE;gBACE,KAAK;gBACL,MAAM;aACP,CACF,EAAE,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAuB;QACjC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../src/commands/expressions/update/set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAgB,MAAM,qBAAqB,CAAC;AAqBzD,MAAM,OAAO,SAAS;IACH,MAAM,CAAkB;IAEzC,YAAoB,MAAuB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,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,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CACxF;YACE,KAAK;YACL,MAAM;SACP,CACF,EAAE,CAAC;QACJ,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC9D,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CACxE;gBACE,KAAK;gBACL,MAAM;aACP,CACF,EAAE,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAuB;QACjC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF;AAWD,MAAM,UAAU,GAAG,CACjB,OAAgB,EAChB,OAAmB,EACnB,QAAsB,EACtB,aAA0B;IAE1B,OAAO,SAAS,CAAC,IAAI,CAAC;QACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,OAAO;QACP,QAAQ;QACR,aAAa;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type UpdateCommandInput as NativeUpdateCommandInput, UpdateCommand } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { WithRequired } from "@infra-blocks/types";
|
|
2
3
|
import type { Attributes } from "../types.js";
|
|
3
4
|
import { type ConditionParams, type UpdateExpressionParams } from "./expressions/index.js";
|
|
4
5
|
import type { Command } from "./types.js";
|
|
6
|
+
type UpdateCommandInput = WithRequired<NativeUpdateCommandInput, "UpdateExpression">;
|
|
5
7
|
export interface UpdateItemParams {
|
|
6
8
|
table: string;
|
|
7
9
|
key: Attributes;
|
|
@@ -15,3 +17,4 @@ export declare class UpdateItem implements Command<UpdateCommandInput, UpdateCom
|
|
|
15
17
|
toAwsCommand(): UpdateCommand;
|
|
16
18
|
static from(params: UpdateItemParams): UpdateItem;
|
|
17
19
|
}
|
|
20
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UpdateCommand } from "@aws-sdk/lib-dynamodb";
|
|
1
|
+
import { UpdateCommand, } from "@aws-sdk/lib-dynamodb";
|
|
2
2
|
import { AttributeNames } from "./attributes/names.js";
|
|
3
3
|
import { AttributeValues } from "./attributes/values.js";
|
|
4
4
|
import { conditionExpression } from "./expressions/condition/expression.js";
|
|
@@ -10,17 +10,16 @@ export class UpdateItem {
|
|
|
10
10
|
}
|
|
11
11
|
toAwsCommandInput() {
|
|
12
12
|
const { table, key, condition, update } = this.params;
|
|
13
|
+
const names = AttributeNames.create();
|
|
14
|
+
const values = AttributeValues.create();
|
|
13
15
|
const input = {
|
|
14
16
|
TableName: table,
|
|
15
17
|
Key: key,
|
|
18
|
+
UpdateExpression: UpdateExpression.from(update).stringify({
|
|
19
|
+
names,
|
|
20
|
+
values,
|
|
21
|
+
}),
|
|
16
22
|
};
|
|
17
|
-
const names = AttributeNames.create();
|
|
18
|
-
const values = AttributeValues.create();
|
|
19
|
-
const updateExpression = UpdateExpression.from(update).stringify({
|
|
20
|
-
names,
|
|
21
|
-
values,
|
|
22
|
-
});
|
|
23
|
-
input.UpdateExpression = updateExpression;
|
|
24
23
|
// If there is no condition, we know that the names and values are finalized and
|
|
25
24
|
// we are ready to return the payload.
|
|
26
25
|
if (condition == null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"update-item.js","sourceRoot":"","sources":["../../../src/commands/update-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,GACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAEL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAyBhC,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,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEtD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,GAAuB;YAChC,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;YACR,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;gBACxD,KAAK;gBACL,MAAM;aACP,CAAC;SACH,CAAC;QAEF,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,mBAAmB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YACnE,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QACH,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"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { TransactWriteCommand, type TransactWriteCommandInput } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import type { Attributes } from "../types.js";
|
|
3
|
+
import { type DeleteItemParams } from "./delete-item.js";
|
|
4
|
+
import type { ConditionParams } from "./expressions/index.js";
|
|
2
5
|
import { type PutItemParams } from "./put-item.js";
|
|
3
6
|
import type { Command } from "./types.js";
|
|
7
|
+
import { type UpdateItemParams } from "./update-item.js";
|
|
8
|
+
export type ConditionCheckParams = {
|
|
9
|
+
table: string;
|
|
10
|
+
key: Attributes;
|
|
11
|
+
condition: ConditionParams;
|
|
12
|
+
};
|
|
13
|
+
export type WriteTransactionAction = {
|
|
14
|
+
put: PutItemParams;
|
|
15
|
+
} | {
|
|
16
|
+
update: UpdateItemParams;
|
|
17
|
+
} | {
|
|
18
|
+
delete: DeleteItemParams;
|
|
19
|
+
} | {
|
|
20
|
+
conditionCheck: ConditionCheckParams;
|
|
21
|
+
};
|
|
4
22
|
export interface WriteTransactionParams {
|
|
5
|
-
writes:
|
|
23
|
+
writes: WriteTransactionAction[];
|
|
6
24
|
}
|
|
7
25
|
export declare class WriteTransaction implements Command<TransactWriteCommandInput, TransactWriteCommand> {
|
|
8
26
|
private readonly writes;
|
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
import { TransactWriteCommand, } from "@aws-sdk/lib-dynamodb";
|
|
2
|
+
import { unreachable } from "@infra-blocks/types";
|
|
3
|
+
import { AttributeNames } from "./attributes/names.js";
|
|
4
|
+
import { AttributeValues } from "./attributes/values.js";
|
|
5
|
+
import { DeleteItem } from "./delete-item.js";
|
|
6
|
+
import { conditionExpression } from "./expressions/condition/expression.js";
|
|
2
7
|
import { PutItem } from "./put-item.js";
|
|
8
|
+
import { UpdateItem } from "./update-item.js";
|
|
9
|
+
const ConditionCheck = {
|
|
10
|
+
toAwsCommandInput(params) {
|
|
11
|
+
const { table, key, condition } = params;
|
|
12
|
+
const names = AttributeNames.create();
|
|
13
|
+
const values = AttributeValues.create();
|
|
14
|
+
// Ask the expression to stringify itself, applying the substitutions by itself.
|
|
15
|
+
const expression = conditionExpression(condition).stringify({
|
|
16
|
+
names,
|
|
17
|
+
values,
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
TableName: table,
|
|
21
|
+
Key: key,
|
|
22
|
+
ConditionExpression: expression,
|
|
23
|
+
ExpressionAttributeNames: names.getSubstitutions(),
|
|
24
|
+
ExpressionAttributeValues: values.getSubstitutions(),
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
const WriteTransactionAction = {
|
|
29
|
+
toAwsCommandInput(write) {
|
|
30
|
+
if ("put" in write) {
|
|
31
|
+
return {
|
|
32
|
+
Put: PutItem.from(write.put).toAwsCommandInput(),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if ("update" in write) {
|
|
36
|
+
return {
|
|
37
|
+
Update: UpdateItem.from(write.update).toAwsCommandInput(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if ("delete" in write) {
|
|
41
|
+
return {
|
|
42
|
+
Delete: DeleteItem.from(write.delete).toAwsCommandInput(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if ("conditionCheck" in write) {
|
|
46
|
+
return {
|
|
47
|
+
ConditionCheck: ConditionCheck.toAwsCommandInput(write.conditionCheck),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
unreachable(write);
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
// TODO: static tuple typing on result. I.e, if the first item is a put, the first result should be a put output you feel?.
|
|
3
54
|
export class WriteTransaction {
|
|
4
55
|
writes;
|
|
5
56
|
constructor(params) {
|
|
@@ -8,9 +59,7 @@ export class WriteTransaction {
|
|
|
8
59
|
}
|
|
9
60
|
toAwsCommandInput() {
|
|
10
61
|
return {
|
|
11
|
-
TransactItems: this.writes.map(
|
|
12
|
-
Put: PutItem.from(item).toAwsCommandInput(),
|
|
13
|
-
})),
|
|
62
|
+
TransactItems: this.writes.map(WriteTransactionAction.toAwsCommandInput),
|
|
14
63
|
};
|
|
15
64
|
}
|
|
16
65
|
toAwsCommand() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-transaction.js","sourceRoot":"","sources":["../../../src/commands/write-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"write-transaction.js","sourceRoot":"","sources":["../../../src/commands/write-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAsB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAAE,OAAO,EAAsB,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAIrE,MAAM,cAAc,GAAG;IACrB,iBAAiB,CAAC,MAA4B;QAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAEzC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACxC,gFAAgF;QAChF,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;YAC1D,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,GAAG;YACR,mBAAmB,EAAE,UAAU;YAC/B,wBAAwB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAClD,yBAAyB,EAAE,MAAM,CAAC,gBAAgB,EAAE;SACrD,CAAC;IACJ,CAAC;CACF,CAAC;AAMF,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB,CAAC,KAA6B;QAC7C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,OAAO;gBACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE;aACjD,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO;gBACL,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;aAC1D,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;YAC9B,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC;aACvE,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;CACF,CAAC;AAkBF,2HAA2H;AAC3H,MAAM,OAAO,gBAAgB;IAGV,MAAM,CAA2B;IAElD,YAAoB,MAA8B;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAA8B;QACxC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infra-blocks/aws-dynamodb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.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",
|
|
@@ -67,6 +67,6 @@
|
|
|
67
67
|
"@infra-blocks/logger-interface": "^0.3.1",
|
|
68
68
|
"@infra-blocks/null-logger": "^0.1.1",
|
|
69
69
|
"@infra-blocks/retry": "^0.1.1",
|
|
70
|
-
"@infra-blocks/types": "^0.
|
|
70
|
+
"@infra-blocks/types": "^0.25.0"
|
|
71
71
|
}
|
|
72
72
|
}
|