@webiny/db-dynamodb 0.0.0-mt-3 → 0.0.0-unstable.1e66d121db
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/BatchProcess.d.ts +26 -10
- package/BatchProcess.js +9 -7
- package/BatchProcess.js.map +1 -0
- package/DynamoDbDriver.d.ts +19 -11
- package/DynamoDbDriver.js +10 -8
- package/DynamoDbDriver.js.map +1 -0
- package/QueryGenerator.d.ts +15 -13
- package/QueryGenerator.js +16 -17
- package/QueryGenerator.js.map +1 -0
- package/index.js +1 -1
- package/index.js.map +1 -0
- package/operators/comparison/beginsWith.js.map +1 -0
- package/operators/comparison/between.js.map +1 -0
- package/operators/comparison/eq.js.map +1 -0
- package/operators/comparison/gt.js.map +1 -0
- package/operators/comparison/gte.js.map +1 -0
- package/operators/comparison/lt.js.map +1 -0
- package/operators/comparison/lte.js.map +1 -0
- package/operators/index.js +1 -1
- package/operators/index.js.map +1 -0
- package/operators/logical/and.js.map +1 -0
- package/operators/logical/or.js.map +1 -0
- package/package.json +17 -16
- package/plugins/definitions/AttributePlugin.d.ts +3 -3
- package/plugins/definitions/AttributePlugin.js +1 -1
- package/plugins/definitions/AttributePlugin.js.map +1 -0
- package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -2
- package/plugins/definitions/DateTimeTransformPlugin.js +7 -7
- package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -0
- package/plugins/definitions/FieldPathPlugin.d.ts +3 -3
- package/plugins/definitions/FieldPathPlugin.js +4 -6
- package/plugins/definitions/FieldPathPlugin.js.map +1 -0
- package/plugins/definitions/FieldPlugin.d.ts +3 -3
- package/plugins/definitions/FieldPlugin.js +1 -1
- package/plugins/definitions/FieldPlugin.js.map +1 -0
- package/plugins/definitions/NumberTransformPlugin.d.ts +2 -2
- package/plugins/definitions/NumberTransformPlugin.js +3 -7
- package/plugins/definitions/NumberTransformPlugin.js.map +1 -0
- package/plugins/definitions/TimeTransformPlugin.d.ts +2 -2
- package/plugins/definitions/TimeTransformPlugin.js +3 -7
- package/plugins/definitions/TimeTransformPlugin.js.map +1 -0
- package/plugins/definitions/ValueFilterPlugin.d.ts +10 -10
- package/plugins/definitions/ValueFilterPlugin.js +1 -1
- package/plugins/definitions/ValueFilterPlugin.js.map +1 -0
- package/plugins/definitions/ValueTransformPlugin.d.ts +8 -8
- package/plugins/definitions/ValueTransformPlugin.js +4 -6
- package/plugins/definitions/ValueTransformPlugin.js.map +1 -0
- package/plugins/definitions/assignFields.js +1 -1
- package/plugins/definitions/assignFields.js.map +1 -0
- package/plugins/filters/andIn.js +1 -1
- package/plugins/filters/andIn.js.map +1 -0
- package/plugins/filters/between.js +1 -1
- package/plugins/filters/between.js.map +1 -0
- package/plugins/filters/contains.js.map +1 -0
- package/plugins/filters/eq.js +13 -0
- package/plugins/filters/eq.js.map +1 -0
- package/plugins/filters/fuzzy.js +1 -1
- package/plugins/filters/fuzzy.js.map +1 -0
- package/plugins/filters/gt.js.map +1 -0
- package/plugins/filters/gte.js.map +1 -0
- package/plugins/filters/in.js +1 -1
- package/plugins/filters/in.js.map +1 -0
- package/plugins/filters/index.js +4 -2
- package/plugins/filters/index.js.map +1 -0
- package/plugins/filters/lt.js.map +1 -0
- package/plugins/filters/lte.js.map +1 -0
- package/plugins/filters/startsWith.d.ts +3 -0
- package/plugins/filters/startsWith.js +33 -0
- package/plugins/filters/startsWith.js.map +1 -0
- package/plugins/index.js +1 -1
- package/plugins/index.js.map +1 -0
- package/statements/createKeyConditionExpressionArgs.d.ts +12 -9
- package/statements/createKeyConditionExpressionArgs.js +5 -1
- package/statements/createKeyConditionExpressionArgs.js.map +1 -0
- package/statements/processStatement.d.ts +3 -4
- package/statements/processStatement.js +8 -5
- package/statements/processStatement.js.map +1 -0
- package/types.d.ts +37 -8
- package/types.js.map +1 -0
- package/utils/attributes.d.ts +2 -2
- package/utils/attributes.js +3 -7
- package/utils/attributes.js.map +1 -0
- package/utils/batchRead.d.ts +1 -1
- package/utils/batchRead.js +56 -25
- package/utils/batchRead.js.map +1 -0
- package/utils/batchWrite.js +1 -1
- package/utils/batchWrite.js.map +1 -0
- package/utils/cleanup.d.ts +2 -2
- package/utils/cleanup.js +9 -17
- package/utils/cleanup.js.map +1 -0
- package/utils/cursor.d.ts +2 -2
- package/utils/cursor.js.map +1 -0
- package/utils/filter.d.ts +2 -2
- package/utils/filter.js +7 -6
- package/utils/filter.js.map +1 -0
- package/utils/get.d.ts +2 -2
- package/utils/get.js.map +1 -0
- package/utils/listResponse.d.ts +1 -1
- package/utils/listResponse.js +9 -6
- package/utils/listResponse.js.map +1 -0
- package/utils/query.d.ts +2 -3
- package/utils/query.js +7 -15
- package/utils/query.js.map +1 -0
- package/utils/sort.d.ts +2 -2
- package/utils/sort.js +4 -6
- package/utils/sort.js.map +1 -0
- package/utils/table.js +1 -1
- package/utils/table.js.map +1 -0
- package/utils/documentClient.d.ts +0 -8
- package/utils/documentClient.js +0 -33
package/BatchProcess.d.ts
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove this when no apps are using our internal db drivers anymore
|
|
3
|
+
*/
|
|
1
4
|
import { DocumentClient } from "aws-sdk/clients/dynamodb";
|
|
2
5
|
import { Batch } from "@webiny/db";
|
|
3
6
|
declare type BatchType = "batchWrite" | "batchGet";
|
|
7
|
+
export declare type AddBatchOperationResponse = () => any | null;
|
|
8
|
+
interface RejectBuildCallable {
|
|
9
|
+
({ message }: {
|
|
10
|
+
message: string;
|
|
11
|
+
}): void;
|
|
12
|
+
}
|
|
13
|
+
interface RejectExecutionCallable {
|
|
14
|
+
({ message }: {
|
|
15
|
+
message: string;
|
|
16
|
+
}): void;
|
|
17
|
+
}
|
|
18
|
+
interface AddBatchOperationArgs {
|
|
19
|
+
/**
|
|
20
|
+
* TODO: determine correct type.
|
|
21
|
+
*/
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
4
24
|
declare class BatchProcess {
|
|
5
25
|
documentClient: DocumentClient;
|
|
6
26
|
batch: Batch;
|
|
7
27
|
resolveBuild: () => void;
|
|
8
|
-
rejectBuild:
|
|
9
|
-
message: any;
|
|
10
|
-
}) => void;
|
|
28
|
+
rejectBuild: RejectBuildCallable;
|
|
11
29
|
queryBuild: Promise<void>;
|
|
12
30
|
resolveExecution: () => void;
|
|
13
|
-
rejectExecution:
|
|
14
|
-
message: any;
|
|
15
|
-
}) => void;
|
|
31
|
+
rejectExecution: RejectExecutionCallable;
|
|
16
32
|
queryExecution: Promise<void>;
|
|
17
33
|
operations: [Record<string, any>, Record<string, any>][];
|
|
18
34
|
batchType: BatchType;
|
|
@@ -21,10 +37,10 @@ declare class BatchProcess {
|
|
|
21
37
|
constructor(batch: Batch, documentClient: DocumentClient);
|
|
22
38
|
waitStartExecution(): Promise<void>;
|
|
23
39
|
waitExecution(): Promise<void>;
|
|
24
|
-
addBatchOperation(type: BatchType, args:
|
|
25
|
-
addBatchWrite(args:
|
|
26
|
-
addBatchDelete(args:
|
|
27
|
-
addBatchGet(args:
|
|
40
|
+
addBatchOperation(type: BatchType, args: AddBatchOperationArgs, meta?: {}): AddBatchOperationResponse;
|
|
41
|
+
addBatchWrite(args: AddBatchOperationArgs): AddBatchOperationResponse;
|
|
42
|
+
addBatchDelete(args: AddBatchOperationArgs): AddBatchOperationResponse;
|
|
43
|
+
addBatchGet(args: AddBatchOperationArgs): AddBatchOperationResponse;
|
|
28
44
|
allOperationsAdded(): boolean;
|
|
29
45
|
startExecution(): import("aws-sdk/lib/request").Request<DocumentClient.BatchWriteItemOutput, import("aws-sdk/lib/error").AWSError> | import("aws-sdk/lib/request").Request<DocumentClient.BatchGetItemOutput, import("aws-sdk/lib/error").AWSError>;
|
|
30
46
|
}
|
package/BatchProcess.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Remove this when no apps are using our internal db drivers anymore
|
|
16
|
+
*/
|
|
17
|
+
// @ts-nocheck
|
|
16
18
|
class BatchProcess {
|
|
17
19
|
constructor(batch, documentClient) {
|
|
18
20
|
(0, _defineProperty2.default)(this, "documentClient", void 0);
|
|
@@ -64,7 +66,7 @@ class BatchProcess {
|
|
|
64
66
|
this.rejectBuild({
|
|
65
67
|
message: `Cannot batch operations - all operations must be of the same type (the initial operation type was "${initial}", and operation type on index "${index}" is "${type}").`
|
|
66
68
|
});
|
|
67
|
-
return;
|
|
69
|
+
return null;
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
this.operations.push([args, meta]);
|
|
@@ -77,7 +79,7 @@ class BatchProcess {
|
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
addBatchDelete(args) {
|
|
80
|
-
return this.addBatchOperation("batchWrite",
|
|
82
|
+
return this.addBatchOperation("batchWrite", (0, _objectSpread2.default)({}, args), {
|
|
81
83
|
delete: true
|
|
82
84
|
});
|
|
83
85
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BatchProcess","constructor","batch","documentClient","resolveBuild","rejectBuild","queryBuild","Promise","resolve","reject","resolveExecution","rejectExecution","queryExecution","operations","results","response","batchType","waitStartExecution","waitExecution","addBatchOperation","type","args","meta","initial","index","length","message","push","addBatchWrite","addBatchDelete","delete","addBatchGet","allOperationsAdded","startExecution","documentClientArgs","ReturnConsumedCapacity","RequestItems","e","i","table","DeleteRequest","Key","query","PutRequest","Item","data","Keys","responseItems","Responses","foundResult","outer","j","responseItem","queryKey","error","result"],"sources":["BatchProcess.ts"],"sourcesContent":["/**\n * Remove this when no apps are using our internal db drivers anymore\n */\n// @ts-nocheck\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Batch } from \"@webiny/db\";\n\ntype BatchType = \"batchWrite\" | \"batchGet\";\n\nexport type AddBatchOperationResponse = () => any | null;\n\ninterface RejectBuildCallable {\n ({ message }: { message: string }): void;\n}\n\ninterface RejectExecutionCallable {\n ({ message }: { message: string }): void;\n}\n\ninterface AddBatchOperationArgs {\n /**\n * TODO: determine correct type.\n */\n [key: string]: any;\n}\n\ninterface Response {\n /**\n * TODO: determine correct type.\n */\n [key: string]: any;\n}\n\ninterface DocumentClientArgs {\n ReturnConsumedCapacity: string;\n RequestItems: Record<string, any>;\n}\n\nclass BatchProcess {\n documentClient: DocumentClient;\n batch: Batch;\n resolveBuild: () => void;\n rejectBuild: RejectBuildCallable;\n queryBuild: Promise<void>;\n resolveExecution: () => void;\n rejectExecution: RejectExecutionCallable;\n queryExecution: Promise<void>;\n operations: [Record<string, any>, Record<string, any>][];\n batchType: BatchType;\n results: Record<string, any>[];\n response: Record<string, any>;\n constructor(batch: Batch, documentClient: DocumentClient) {\n this.documentClient = documentClient;\n this.batch = batch;\n\n this.resolveBuild = null;\n this.rejectBuild = null;\n this.queryBuild = new Promise((resolve, reject) => {\n this.resolveBuild = resolve;\n this.rejectBuild = reject;\n });\n\n this.resolveExecution = null;\n this.rejectExecution = null;\n this.queryExecution = new Promise((resolve, reject) => {\n this.resolveExecution = resolve;\n this.rejectExecution = reject;\n });\n\n this.operations = [];\n this.results = [];\n this.response = [];\n\n this.batchType;\n }\n\n waitStartExecution(): Promise<void> {\n return this.queryBuild;\n }\n\n waitExecution(): Promise<void> {\n return this.queryExecution;\n }\n\n addBatchOperation(\n type: BatchType,\n args: AddBatchOperationArgs,\n meta = {}\n ): AddBatchOperationResponse {\n if (!this.batchType) {\n this.batchType = type;\n } else if (this.batchType !== type) {\n const initial = this.batchType;\n const index = this.operations.length;\n this.rejectBuild({\n message: `Cannot batch operations - all operations must be of the same type (the initial operation type was \"${initial}\", and operation type on index \"${index}\" is \"${type}\").`\n });\n return null;\n }\n\n this.operations.push([args, meta]);\n const index = this.operations.length - 1;\n return () => this.results[index];\n }\n\n addBatchWrite(args: AddBatchOperationArgs): AddBatchOperationResponse {\n return this.addBatchOperation(\"batchWrite\", args);\n }\n\n addBatchDelete(args: AddBatchOperationArgs): AddBatchOperationResponse {\n return this.addBatchOperation(\"batchWrite\", { ...args }, { delete: true });\n }\n\n addBatchGet(args: AddBatchOperationArgs): AddBatchOperationResponse {\n return this.addBatchOperation(\"batchGet\", args);\n }\n\n allOperationsAdded(): boolean {\n return this.operations.length === this.batch.operations.length;\n }\n\n startExecution() {\n this.resolveBuild();\n\n const documentClientArgs: DocumentClientArgs = {\n ReturnConsumedCapacity: \"TOTAL\",\n RequestItems: {}\n };\n\n const reject = (e: Error) => {\n e.message = `An error occurred while executing \"${this.batchType}\" batch operation: ${e.message}`;\n return this.rejectExecution(e);\n };\n\n let resolve = (response: Response) => {\n this.response = response;\n this.resolveExecution();\n };\n\n switch (this.batchType) {\n case \"batchWrite\":\n documentClientArgs.RequestItems = {};\n for (let i = 0; i < this.operations.length; i++) {\n const [args, meta] = this.operations[i];\n\n if (!documentClientArgs.RequestItems[args.table]) {\n documentClientArgs.RequestItems[args.table] = [];\n }\n\n const push: {\n DeleteRequest?: Record<string, any>;\n PutRequest?: Record<string, any>;\n } = {};\n\n if (meta.delete) {\n push.DeleteRequest = {\n Key: args.query\n };\n } else {\n push.PutRequest = {\n Item: args.data\n };\n }\n\n documentClientArgs.RequestItems[args.table].push(push);\n }\n break;\n case \"batchGet\":\n documentClientArgs.RequestItems = {};\n for (let i = 0; i < this.operations.length; i++) {\n const [args] = this.operations[i];\n\n if (!documentClientArgs.RequestItems[args.table]) {\n documentClientArgs.RequestItems[args.table] = { Keys: [] };\n }\n\n documentClientArgs.RequestItems[args.table].Keys.push(args.query);\n }\n\n resolve = response => {\n this.response = response;\n const results = [];\n\n // The results of batchGet aren't ordered so we have to figure out the order of results ourselves.\n for (let i = 0; i < this.operations.length; i++) {\n const [args] = this.operations[i];\n const responseItems = response.Responses[args.table];\n\n let foundResult = null;\n outer: for (let j = 0; j < responseItems.length; j++) {\n const responseItem = responseItems[j];\n for (const queryKey in args.query) {\n if (\n typeof responseItem[queryKey] === \"undefined\" ||\n args.query[queryKey] !== responseItem[queryKey]\n ) {\n continue outer;\n }\n }\n foundResult = responseItem;\n }\n\n results.push(foundResult);\n }\n\n this.results = results;\n this.resolveExecution();\n };\n break;\n }\n\n return this.documentClient[this.batchType](\n documentClientArgs,\n (error: Error, result: Record<string, any>) => {\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n }\n );\n }\n}\n\nexport default BatchProcess;\n"],"mappings":"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"}
|
package/DynamoDbDriver.d.ts
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove this when no apps are using our internal db drivers anymore
|
|
3
|
+
*/
|
|
1
4
|
import { DocumentClient } from "aws-sdk/clients/dynamodb";
|
|
2
5
|
import BatchProcess from "./BatchProcess";
|
|
3
|
-
import { DbDriver, Args, Result } from "@webiny/db";
|
|
6
|
+
import { DbDriver, Args, Result, ArgsBatch } from "@webiny/db";
|
|
4
7
|
declare type ConstructorArgs = {
|
|
5
8
|
documentClient?: DocumentClient;
|
|
6
9
|
};
|
|
10
|
+
interface ReadLogsParams {
|
|
11
|
+
table: string;
|
|
12
|
+
}
|
|
13
|
+
interface CreateLogParams {
|
|
14
|
+
id: string;
|
|
15
|
+
operation: string;
|
|
16
|
+
/**
|
|
17
|
+
* TODO: determine the data type.
|
|
18
|
+
*/
|
|
19
|
+
data: any;
|
|
20
|
+
table: string;
|
|
21
|
+
}
|
|
7
22
|
declare class DynamoDbDriver implements DbDriver {
|
|
8
23
|
batchProcesses: Record<string, BatchProcess>;
|
|
9
24
|
documentClient: DocumentClient;
|
|
@@ -13,15 +28,8 @@ declare class DynamoDbDriver implements DbDriver {
|
|
|
13
28
|
update({ query, data, table, meta, __batch: batch }: Args): Promise<Result>;
|
|
14
29
|
delete({ query, table, meta, __batch: batch }: Args): Promise<Result>;
|
|
15
30
|
read<T>({ table, query, sort, limit, keys, meta, __batch: batch }: Args): Promise<Result<T[]>>;
|
|
16
|
-
createLog({ id, operation, data, table }:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
data: any;
|
|
20
|
-
table: any;
|
|
21
|
-
}): Promise<Result>;
|
|
22
|
-
readLogs<T>({ table }: {
|
|
23
|
-
table: any;
|
|
24
|
-
}): Promise<Result<T[]>>;
|
|
25
|
-
getBatchProcess(__batch: any): BatchProcess;
|
|
31
|
+
createLog({ id, operation, data, table }: CreateLogParams): Promise<Result>;
|
|
32
|
+
readLogs<T>({ table }: ReadLogsParams): Promise<Result<T[]>>;
|
|
33
|
+
getBatchProcess(__batch: ArgsBatch): BatchProcess;
|
|
26
34
|
}
|
|
27
35
|
export default DynamoDbDriver;
|
package/DynamoDbDriver.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
12
14
|
var _dynamodb = require("aws-sdk/clients/dynamodb");
|
|
@@ -15,10 +17,10 @@ var _BatchProcess = _interopRequireDefault(require("./BatchProcess"));
|
|
|
15
17
|
|
|
16
18
|
var _QueryGenerator = _interopRequireDefault(require("./QueryGenerator"));
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Remove this when no apps are using our internal db drivers anymore
|
|
22
|
+
*/
|
|
23
|
+
// @ts-nocheck
|
|
22
24
|
const LOG_KEYS = [{
|
|
23
25
|
primary: true,
|
|
24
26
|
unique: true,
|
|
@@ -101,7 +103,7 @@ class DynamoDbDriver {
|
|
|
101
103
|
}
|
|
102
104
|
|
|
103
105
|
update.UpdateExpression += updateExpression.join(", ");
|
|
104
|
-
const result = await this.documentClient.update(
|
|
106
|
+
const result = await this.documentClient.update((0, _objectSpread2.default)({
|
|
105
107
|
TableName: table,
|
|
106
108
|
Key: query,
|
|
107
109
|
ReturnConsumedCapacity: meta ? "TOTAL" : "NONE"
|
|
@@ -182,7 +184,7 @@ class DynamoDbDriver {
|
|
|
182
184
|
limit,
|
|
183
185
|
tableName: table
|
|
184
186
|
});
|
|
185
|
-
const response = await this.documentClient.query(
|
|
187
|
+
const response = await this.documentClient.query((0, _objectSpread2.default)((0, _objectSpread2.default)({}, queryParams), {}, {
|
|
186
188
|
ReturnConsumedCapacity: meta ? "TOTAL" : "NONE"
|
|
187
189
|
})).promise();
|
|
188
190
|
|
|
@@ -233,7 +235,7 @@ class DynamoDbDriver {
|
|
|
233
235
|
await this.create({
|
|
234
236
|
table: table,
|
|
235
237
|
keys: LOG_KEYS,
|
|
236
|
-
data:
|
|
238
|
+
data: (0, _objectSpread2.default)({
|
|
237
239
|
PK: "log",
|
|
238
240
|
SK: id,
|
|
239
241
|
id,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LOG_KEYS","primary","unique","name","fields","DynamoDbDriver","constructor","documentClient","batchProcesses","DocumentClient","getClient","create","table","data","meta","__batch","batch","result","put","TableName","Item","ReturnConsumedCapacity","promise","response","$response","batchProcess","getBatchProcess","addBatchWrite","allOperationsAdded","startExecution","waitStartExecution","waitExecution","update","query","UpdateExpression","ExpressionAttributeNames","ExpressionAttributeValues","updateExpression","key","push","join","Key","delete","addBatchDelete","read","sort","limit","keys","queryGenerator","QueryGenerator","queryParams","generate","tableName","Array","isArray","Items","getResult","addBatchGet","createLog","id","operation","PK","SK","readLogs","$gte","instance","BatchProcess"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["/**\n * Remove this when no apps are using our internal db drivers anymore\n */\n// @ts-nocheck\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport BatchProcess from \"./BatchProcess\";\nimport QueryGenerator from \"./QueryGenerator\";\nimport { DbDriver, Args, Result, ArgsBatch } from \"@webiny/db\";\nimport { QueryKeys } from \"~/types\";\n\ntype ConstructorArgs = {\n documentClient?: DocumentClient;\n};\n\nconst LOG_KEYS: QueryKeys = [\n {\n primary: true,\n unique: true,\n name: \"primary\",\n fields: [{ name: \"PK\" }, { name: \"SK\" }]\n }\n];\n\ninterface Update {\n UpdateExpression: string;\n ExpressionAttributeNames: Record<string, any>;\n ExpressionAttributeValues: Record<string, any>;\n}\n\ninterface ReadLogsParams {\n table: string;\n}\n\ninterface CreateLogParams {\n id: string;\n operation: string;\n /**\n * TODO: determine the data type.\n */\n data: any;\n table: string;\n}\n\nclass DynamoDbDriver implements DbDriver {\n batchProcesses: Record<string, BatchProcess>;\n documentClient: DocumentClient;\n constructor({ documentClient }: ConstructorArgs = {}) {\n this.batchProcesses = {};\n this.documentClient = documentClient || new DocumentClient();\n }\n\n getClient() {\n return this.documentClient;\n }\n\n async create({ table, data, meta, __batch: batch }: Args): Promise<Result> {\n if (!batch) {\n const result = await this.documentClient\n .put({\n TableName: table,\n Item: data,\n ReturnConsumedCapacity: meta ? \"TOTAL\" : \"NONE\"\n })\n .promise();\n return [true, { response: result.$response }];\n }\n\n const batchProcess = this.getBatchProcess(batch);\n batchProcess.addBatchWrite({ table, data });\n\n if (batchProcess.allOperationsAdded()) {\n batchProcess.startExecution();\n } else {\n await batchProcess.waitStartExecution();\n }\n\n await batchProcess.waitExecution();\n\n return [true, { response: batchProcess.response }];\n }\n\n async update({ query, data, table, meta, __batch: batch }: Args): Promise<Result> {\n if (!batch) {\n const update: Update = {\n UpdateExpression: \"SET \",\n ExpressionAttributeNames: {},\n ExpressionAttributeValues: {}\n };\n\n const updateExpression = [];\n for (const key in data) {\n updateExpression.push(`#${key} = :${key}`);\n update.ExpressionAttributeNames[`#${key}`] = key;\n update.ExpressionAttributeValues[`:${key}`] = data[key];\n }\n\n update.UpdateExpression += updateExpression.join(\", \");\n\n const result = await this.documentClient\n .update({\n TableName: table,\n Key: query,\n ReturnConsumedCapacity: meta ? \"TOTAL\" : \"NONE\",\n ...update\n })\n .promise();\n\n return [true, { response: result.$response }];\n }\n\n const batchProcess = this.getBatchProcess(batch);\n\n batchProcess.addBatchWrite({\n table,\n data\n });\n\n if (batchProcess.allOperationsAdded()) {\n batchProcess.startExecution();\n } else {\n await batchProcess.waitStartExecution();\n }\n\n await batchProcess.waitExecution();\n\n return [true, { response: batchProcess.response }];\n }\n\n async delete({ query, table, meta, __batch: batch }: Args): Promise<Result> {\n if (!batch) {\n const result = await this.documentClient\n .delete({\n TableName: table,\n Key: query,\n ReturnConsumedCapacity: meta ? \"TOTAL\" : \"NONE\"\n })\n .promise();\n\n return [true, { response: result.$response }];\n }\n\n const batchProcess = this.getBatchProcess(batch);\n batchProcess.addBatchDelete({\n table,\n query\n });\n\n if (batchProcess.allOperationsAdded()) {\n batchProcess.startExecution();\n } else {\n await batchProcess.waitStartExecution();\n }\n\n await batchProcess.waitExecution();\n\n return [true, { response: batchProcess.response }];\n }\n\n async read<T>({\n table,\n query,\n sort,\n limit,\n keys,\n meta,\n __batch: batch\n }: Args): Promise<Result<T[]>> {\n if (!batch) {\n const queryGenerator = new QueryGenerator();\n const queryParams = queryGenerator.generate({\n query,\n keys,\n sort,\n limit,\n tableName: table\n });\n\n const response = await this.documentClient\n .query({ ...queryParams, ReturnConsumedCapacity: meta ? \"TOTAL\" : \"NONE\" })\n .promise();\n\n if (Array.isArray(response.Items)) {\n return [response.Items as T[], { response: response.$response }];\n }\n return [[], { response: response.$response }];\n }\n\n // DynamoDb doesn't support batch queries, so we can immediately assume the GetRequest operation.\n const batchProcess = this.getBatchProcess(batch);\n const getResult = batchProcess.addBatchGet({\n table,\n query\n });\n\n if (batchProcess.allOperationsAdded()) {\n batchProcess.startExecution();\n } else {\n await batchProcess.waitStartExecution();\n }\n\n await batchProcess.waitExecution();\n\n const result = getResult() as T;\n if (result) {\n return [[result], { response: batchProcess.response }];\n }\n\n return [[], { response: batchProcess.response }];\n }\n\n async createLog({ id, operation, data, table }: CreateLogParams): Promise<Result> {\n await this.create({\n table: table,\n keys: LOG_KEYS,\n data: {\n PK: \"log\",\n SK: id,\n id,\n operation,\n ...data\n }\n });\n\n return [true, {}];\n }\n\n async readLogs<T>({ table }: ReadLogsParams) {\n return this.read<T>({\n table,\n keys: LOG_KEYS,\n query: {\n PK: \"log\",\n SK: { $gte: \" \" }\n }\n });\n }\n\n getBatchProcess(__batch: ArgsBatch): BatchProcess {\n if (!this.batchProcesses[__batch.instance.id]) {\n this.batchProcesses[__batch.instance.id] = new BatchProcess(\n __batch.instance,\n this.documentClient\n );\n }\n\n return this.batchProcesses[__batch.instance.id];\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":"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"}
|
package/QueryGenerator.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
import { Query, QueryKey, QueryKeys, QuerySort } from "./types";
|
|
2
|
+
interface GenerateParams {
|
|
3
|
+
query: Query;
|
|
4
|
+
keys: QueryKeys;
|
|
5
|
+
sort: QuerySort;
|
|
6
|
+
limit: number;
|
|
7
|
+
tableName: string;
|
|
8
|
+
}
|
|
1
9
|
declare class QueryGenerator {
|
|
2
|
-
generate(
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
sort: any;
|
|
6
|
-
limit: any;
|
|
7
|
-
tableName: any;
|
|
8
|
-
}): {
|
|
9
|
-
TableName: any;
|
|
10
|
-
Limit: any;
|
|
10
|
+
generate(params: GenerateParams): {
|
|
11
|
+
TableName: string;
|
|
12
|
+
Limit: number;
|
|
11
13
|
KeyConditionExpression: string;
|
|
12
|
-
ExpressionAttributeNames:
|
|
13
|
-
ExpressionAttributeValues:
|
|
14
|
+
ExpressionAttributeNames: Record<string, any>;
|
|
15
|
+
ExpressionAttributeValues: Record<string, any>;
|
|
14
16
|
ScanIndexForward: boolean;
|
|
15
|
-
IndexName:
|
|
17
|
+
IndexName: string;
|
|
16
18
|
};
|
|
17
|
-
findQueryKey(query?:
|
|
19
|
+
findQueryKey(query?: Query, keys?: QueryKeys): QueryKey | null;
|
|
18
20
|
}
|
|
19
21
|
export default QueryGenerator;
|
package/QueryGenerator.js
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _createKeyConditionExpressionArgs = _interopRequireDefault(require("./statements/createKeyConditionExpressionArgs"));
|
|
13
13
|
|
|
14
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
-
|
|
16
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
17
|
-
|
|
18
14
|
class QueryGenerator {
|
|
19
|
-
generate({
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// 1. Which key can we use in this query operation?
|
|
15
|
+
generate(params) {
|
|
16
|
+
const {
|
|
17
|
+
query,
|
|
18
|
+
keys,
|
|
19
|
+
sort,
|
|
20
|
+
limit,
|
|
21
|
+
tableName
|
|
22
|
+
} = params; // 1. Which key can we use in this query operation?
|
|
23
|
+
|
|
27
24
|
const key = this.findQueryKey(query, keys);
|
|
28
25
|
|
|
29
26
|
if (!key) {
|
|
@@ -31,8 +28,8 @@ class QueryGenerator {
|
|
|
31
28
|
} // 2. Now that we know the key, let's separate the key attributes from the rest.
|
|
32
29
|
|
|
33
30
|
|
|
34
|
-
const keyAttributesValues = {}
|
|
35
|
-
|
|
31
|
+
const keyAttributesValues = {};
|
|
32
|
+
const nonKeyAttributesValues = {};
|
|
36
33
|
|
|
37
34
|
for (const queryKey in query) {
|
|
38
35
|
if (key.fields.find(item => item.name === queryKey)) {
|
|
@@ -47,7 +44,7 @@ class QueryGenerator {
|
|
|
47
44
|
sort,
|
|
48
45
|
key
|
|
49
46
|
});
|
|
50
|
-
return
|
|
47
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, keyConditionExpression), {}, {
|
|
51
48
|
TableName: tableName,
|
|
52
49
|
Limit: limit
|
|
53
50
|
});
|
|
@@ -71,6 +68,8 @@ class QueryGenerator {
|
|
|
71
68
|
return key;
|
|
72
69
|
}
|
|
73
70
|
}
|
|
71
|
+
|
|
72
|
+
return null;
|
|
74
73
|
}
|
|
75
74
|
|
|
76
75
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["QueryGenerator","generate","params","query","keys","sort","limit","tableName","key","findQueryKey","Error","keyAttributesValues","nonKeyAttributesValues","queryKey","fields","find","item","name","keyConditionExpression","createKeyConditionExpressionArgs","TableName","Limit","i","length","hasAllFields","j","field"],"sources":["QueryGenerator.ts"],"sourcesContent":["import createKeyConditionExpressionArgs from \"./statements/createKeyConditionExpressionArgs\";\nimport { Query, QueryKey, QueryKeyField, QueryKeys, QuerySort } from \"~/types\";\n\ninterface GenerateParams {\n query: Query;\n keys: QueryKeys;\n sort: QuerySort;\n limit: number;\n tableName: string;\n}\nclass QueryGenerator {\n generate(params: GenerateParams) {\n const { query, keys, sort, limit, tableName } = params;\n // 1. Which key can we use in this query operation?\n const key = this.findQueryKey(query, keys);\n\n if (!key) {\n throw new Error(\"Cannot perform query - key not found.\");\n }\n\n // 2. Now that we know the key, let's separate the key attributes from the rest.\n const keyAttributesValues: Record<string, string> = {};\n const nonKeyAttributesValues: Record<string, string> = {};\n for (const queryKey in query) {\n if (key.fields.find((item: QueryKeyField) => item.name === queryKey)) {\n keyAttributesValues[queryKey] = query[queryKey];\n } else {\n nonKeyAttributesValues[queryKey] = query[queryKey];\n }\n }\n\n const keyConditionExpression = createKeyConditionExpressionArgs({\n query: keyAttributesValues,\n sort,\n key\n });\n\n return { ...keyConditionExpression, TableName: tableName, Limit: limit };\n }\n\n findQueryKey(query: Query = {}, keys: QueryKeys = []): QueryKey | null {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n let hasAllFields = true;\n for (let j = 0; j < key.fields.length; j++) {\n const field = key.fields[j];\n if (!query[field.name]) {\n hasAllFields = false;\n break;\n }\n }\n\n if (hasAllFields) {\n return key;\n }\n }\n return null;\n }\n}\n\nexport default QueryGenerator;\n"],"mappings":";;;;;;;;;;;AAAA;;AAUA,MAAMA,cAAN,CAAqB;EACjBC,QAAQ,CAACC,MAAD,EAAyB;IAC7B,MAAM;MAAEC,KAAF;MAASC,IAAT;MAAeC,IAAf;MAAqBC,KAArB;MAA4BC;IAA5B,IAA0CL,MAAhD,CAD6B,CAE7B;;IACA,MAAMM,GAAG,GAAG,KAAKC,YAAL,CAAkBN,KAAlB,EAAyBC,IAAzB,CAAZ;;IAEA,IAAI,CAACI,GAAL,EAAU;MACN,MAAM,IAAIE,KAAJ,CAAU,uCAAV,CAAN;IACH,CAP4B,CAS7B;;;IACA,MAAMC,mBAA2C,GAAG,EAApD;IACA,MAAMC,sBAA8C,GAAG,EAAvD;;IACA,KAAK,MAAMC,QAAX,IAAuBV,KAAvB,EAA8B;MAC1B,IAAIK,GAAG,CAACM,MAAJ,CAAWC,IAAX,CAAiBC,IAAD,IAAyBA,IAAI,CAACC,IAAL,KAAcJ,QAAvD,CAAJ,EAAsE;QAClEF,mBAAmB,CAACE,QAAD,CAAnB,GAAgCV,KAAK,CAACU,QAAD,CAArC;MACH,CAFD,MAEO;QACHD,sBAAsB,CAACC,QAAD,CAAtB,GAAmCV,KAAK,CAACU,QAAD,CAAxC;MACH;IACJ;;IAED,MAAMK,sBAAsB,GAAG,IAAAC,yCAAA,EAAiC;MAC5DhB,KAAK,EAAEQ,mBADqD;MAE5DN,IAF4D;MAG5DG;IAH4D,CAAjC,CAA/B;IAMA,mEAAYU,sBAAZ;MAAoCE,SAAS,EAAEb,SAA/C;MAA0Dc,KAAK,EAAEf;IAAjE;EACH;;EAEDG,YAAY,CAACN,KAAY,GAAG,EAAhB,EAAoBC,IAAe,GAAG,EAAtC,EAA2D;IACnE,KAAK,IAAIkB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGlB,IAAI,CAACmB,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;MAClC,MAAMd,GAAG,GAAGJ,IAAI,CAACkB,CAAD,CAAhB;MACA,IAAIE,YAAY,GAAG,IAAnB;;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGjB,GAAG,CAACM,MAAJ,CAAWS,MAA/B,EAAuCE,CAAC,EAAxC,EAA4C;QACxC,MAAMC,KAAK,GAAGlB,GAAG,CAACM,MAAJ,CAAWW,CAAX,CAAd;;QACA,IAAI,CAACtB,KAAK,CAACuB,KAAK,CAACT,IAAP,CAAV,EAAwB;UACpBO,YAAY,GAAG,KAAf;UACA;QACH;MACJ;;MAED,IAAIA,YAAJ,EAAkB;QACd,OAAOhB,GAAP;MACH;IACJ;;IACD,OAAO,IAAP;EACH;;AA/CgB;;eAkDNR,c"}
|
package/index.js
CHANGED
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["import { default as DynamoDbDriver } from \"./DynamoDbDriver\";\n\nexport { DynamoDbDriver };\n"],"mappings":";;;;;;;;;;;;;;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["beginsWith","canProcess","value","process","key","args","expression","attributeNames","attributeValues"],"sources":["beginsWith.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst beginsWith: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$beginsWith\"] !== \"undefined\";\n },\n process: ({ key, value, args }) => {\n args.expression += `begins_with (#${key}, :${key})`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value[\"$beginsWith\"];\n }\n};\n\nexport default beginsWith;\n"],"mappings":";;;;;;AAEA,MAAMA,UAAoB,GAAG;EACzBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,aAAD,CAAZ,KAAgC,WAAhD;EACH,CAHwB;EAIzBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF,KAAP;IAAcG;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,iBAAgBF,GAAI,MAAKA,GAAI,GAAjD;IACAC,IAAI,CAACE,cAAL,CAAqB,IAAGH,GAAI,EAA5B,IAAiCA,GAAjC;IACAC,IAAI,CAACG,eAAL,CAAsB,IAAGJ,GAAI,EAA7B,IAAkCF,KAAK,CAAC,aAAD,CAAvC;EACH;AARwB,CAA7B;eAWeF,U"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["between","canProcess","value","process","key","statement","attributeNames","attributeValues"],"sources":["between.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst between: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$between\"] !== \"undefined\";\n },\n process: ({ key, value }) => {\n return {\n statement: `#${key} BETWEEN :${key}Gte AND :${key}Lte`,\n attributeNames: {\n [`#${key}`]: key\n },\n attributeValues: {\n [`:${key}Gte`]: value[0],\n [`:${key}Lte`]: value[1]\n }\n };\n }\n};\n\nexport default between;\n"],"mappings":";;;;;;AAEA,MAAMA,OAAiB,GAAG;EACtBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,UAAD,CAAZ,KAA6B,WAA7C;EACH,CAHqB;EAItBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF;EAAP,CAAD,KAAoB;IACzB,OAAO;MACHG,SAAS,EAAG,IAAGD,GAAI,aAAYA,GAAI,YAAWA,GAAI,KAD/C;MAEHE,cAAc,EAAE;QACZ,CAAE,IAAGF,GAAI,EAAT,GAAaA;MADD,CAFb;MAKHG,eAAe,EAAE;QACb,CAAE,IAAGH,GAAI,KAAT,GAAgBF,KAAK,CAAC,CAAD,CADR;QAEb,CAAE,IAAGE,GAAI,KAAT,GAAgBF,KAAK,CAAC,CAAD;MAFR;IALd,CAAP;EAUH;AAfqB,CAA1B;eAkBeF,O"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["validTypes","eq","canProcess","key","value","charAt","includes","process","args","expression","attributeNames","attributeValues"],"sources":["eq.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst validTypes = [\"string\", \"boolean\", \"number\"];\n\nconst eq: Operator = {\n canProcess: ({ key, value }) => {\n if (key && key.charAt(0) === \"$\") {\n return false;\n }\n\n if (value && typeof value[\"$eq\"] !== \"undefined\") {\n return true;\n }\n\n return validTypes.includes(typeof value);\n },\n process: ({ key, value, args }) => {\n args.expression += `#${key} = :${key}`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value;\n }\n};\n\nexport default eq;\n"],"mappings":";;;;;;AAEA,MAAMA,UAAU,GAAG,CAAC,QAAD,EAAW,SAAX,EAAsB,QAAtB,CAAnB;AAEA,MAAMC,EAAY,GAAG;EACjBC,UAAU,EAAE,CAAC;IAAEC,GAAF;IAAOC;EAAP,CAAD,KAAoB;IAC5B,IAAID,GAAG,IAAIA,GAAG,CAACE,MAAJ,CAAW,CAAX,MAAkB,GAA7B,EAAkC;MAC9B,OAAO,KAAP;IACH;;IAED,IAAID,KAAK,IAAI,OAAOA,KAAK,CAAC,KAAD,CAAZ,KAAwB,WAArC,EAAkD;MAC9C,OAAO,IAAP;IACH;;IAED,OAAOJ,UAAU,CAACM,QAAX,CAAoB,OAAOF,KAA3B,CAAP;EACH,CAXgB;EAYjBG,OAAO,EAAE,CAAC;IAAEJ,GAAF;IAAOC,KAAP;IAAcI;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,IAAGN,GAAI,OAAMA,GAAI,EAArC;IACAK,IAAI,CAACE,cAAL,CAAqB,IAAGP,GAAI,EAA5B,IAAiCA,GAAjC;IACAK,IAAI,CAACG,eAAL,CAAsB,IAAGR,GAAI,EAA7B,IAAkCC,KAAlC;EACH;AAhBgB,CAArB;eAmBeH,E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["gt","canProcess","value","process","key","args","expression","attributeNames","attributeValues"],"sources":["gt.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst gt: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$gt\"] !== \"undefined\";\n },\n process: ({ key, value, args }) => {\n args.expression += `#${key} > :${key}`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value[\"$gt\"];\n }\n};\n\nexport default gt;\n"],"mappings":";;;;;;AAEA,MAAMA,EAAY,GAAG;EACjBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,KAAD,CAAZ,KAAwB,WAAxC;EACH,CAHgB;EAIjBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF,KAAP;IAAcG;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,IAAGF,GAAI,OAAMA,GAAI,EAArC;IACAC,IAAI,CAACE,cAAL,CAAqB,IAAGH,GAAI,EAA5B,IAAiCA,GAAjC;IACAC,IAAI,CAACG,eAAL,CAAsB,IAAGJ,GAAI,EAA7B,IAAkCF,KAAK,CAAC,KAAD,CAAvC;EACH;AARgB,CAArB;eAWeF,E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["gte","canProcess","value","process","key","args","expression","attributeNames","attributeValues"],"sources":["gte.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst gte: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$gte\"] !== \"undefined\";\n },\n process: ({ key, value, args }) => {\n args.expression += `#${key} >= :${key}`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value[\"$gte\"];\n }\n};\n\nexport default gte;\n"],"mappings":";;;;;;AAEA,MAAMA,GAAa,GAAG;EAClBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,MAAD,CAAZ,KAAyB,WAAzC;EACH,CAHiB;EAIlBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF,KAAP;IAAcG;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,IAAGF,GAAI,QAAOA,GAAI,EAAtC;IACAC,IAAI,CAACE,cAAL,CAAqB,IAAGH,GAAI,EAA5B,IAAiCA,GAAjC;IACAC,IAAI,CAACG,eAAL,CAAsB,IAAGJ,GAAI,EAA7B,IAAkCF,KAAK,CAAC,MAAD,CAAvC;EACH;AARiB,CAAtB;eAWeF,G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["lt","canProcess","value","process","key","args","expression","attributeNames","attributeValues"],"sources":["lt.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst lt: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$lt\"] !== \"undefined\";\n },\n process: ({ key, value, args }) => {\n args.expression += `#${key} < :${key}`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value[\"$lt\"];\n }\n};\n\nexport default lt;\n"],"mappings":";;;;;;AAEA,MAAMA,EAAY,GAAG;EACjBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,KAAD,CAAZ,KAAwB,WAAxC;EACH,CAHgB;EAIjBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF,KAAP;IAAcG;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,IAAGF,GAAI,OAAMA,GAAI,EAArC;IACAC,IAAI,CAACE,cAAL,CAAqB,IAAGH,GAAI,EAA5B,IAAiCA,GAAjC;IACAC,IAAI,CAACG,eAAL,CAAsB,IAAGJ,GAAI,EAA7B,IAAkCF,KAAK,CAAC,KAAD,CAAvC;EACH;AARgB,CAArB;eAWeF,E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["lte","canProcess","value","process","key","args","expression","attributeNames","attributeValues"],"sources":["lte.ts"],"sourcesContent":["import { Operator } from \"~/types\";\n\nconst lte: Operator = {\n canProcess: ({ value }) => {\n return value && typeof value[\"$lte\"] !== \"undefined\";\n },\n process: ({ key, value, args }) => {\n args.expression += `#${key} <= :${key}`;\n args.attributeNames[`#${key}`] = key;\n args.attributeValues[`:${key}`] = value[\"$lte\"];\n }\n};\n\nexport default lte;\n"],"mappings":";;;;;;AAEA,MAAMA,GAAa,GAAG;EAClBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAe;IACvB,OAAOA,KAAK,IAAI,OAAOA,KAAK,CAAC,MAAD,CAAZ,KAAyB,WAAzC;EACH,CAHiB;EAIlBC,OAAO,EAAE,CAAC;IAAEC,GAAF;IAAOF,KAAP;IAAcG;EAAd,CAAD,KAA0B;IAC/BA,IAAI,CAACC,UAAL,IAAoB,IAAGF,GAAI,QAAOA,GAAI,EAAtC;IACAC,IAAI,CAACE,cAAL,CAAqB,IAAGH,GAAI,EAA5B,IAAiCA,GAAjC;IACAC,IAAI,CAACG,eAAL,CAAsB,IAAGJ,GAAI,EAA7B,IAAkCF,KAAK,CAAC,MAAD,CAAvC;EACH;AARiB,CAAtB;eAWeF,G"}
|
package/operators/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["$and","$or","$beginsWith","$between","$eq","$gt","$gte","$lt","$lte"],"sources":["index.ts"],"sourcesContent":["import $and from \"./logical/and\";\nimport $or from \"./logical/or\";\nimport $beginsWith from \"./comparison/beginsWith\";\nimport $between from \"./comparison/between\";\nimport $gt from \"./comparison/gt\";\nimport $gte from \"./comparison/gte\";\nimport $lt from \"./comparison/lt\";\nimport $lte from \"./comparison/lte\";\nimport $eq from \"./comparison/eq\";\n\nexport default {\n $and,\n $or,\n $beginsWith,\n $between,\n $eq,\n $gt,\n $gte,\n $lt,\n $lte\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;eAEe;EACXA,IAAI,EAAJA,YADW;EAEXC,GAAG,EAAHA,WAFW;EAGXC,WAAW,EAAXA,mBAHW;EAIXC,QAAQ,EAARA,gBAJW;EAKXC,GAAG,EAAHA,WALW;EAMXC,GAAG,EAAHA,WANW;EAOXC,IAAI,EAAJA,YAPW;EAQXC,GAAG,EAAHA,WARW;EASXC,IAAI,EAAJA;AATW,C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["processQuery","query","andArgs","processStatement","args","expression","attributeNames","attributeValues","Object","assign","and","canProcess","key","process","value","Array","isArray","i","length","andKey","andValue","entries"],"sources":["and.ts"],"sourcesContent":["import {\n Operator,\n ProcessStatementArgsParam,\n ProcessStatementCallable,\n ProcessStatementQueryParam\n} from \"~/types\";\n\nconst processQuery = (\n query: ProcessStatementQueryParam,\n andArgs: ProcessStatementArgsParam,\n processStatement: ProcessStatementCallable\n) => {\n const args: ProcessStatementArgsParam = {\n expression: \"\",\n attributeNames: {},\n attributeValues: {}\n };\n\n processStatement({ args, query });\n\n Object.assign(andArgs.attributeNames, args.attributeNames);\n Object.assign(andArgs.attributeValues, args.attributeValues);\n\n if (andArgs.expression === \"\") {\n andArgs.expression = args.expression;\n } else {\n andArgs.expression += \" and \" + args.expression;\n }\n};\n\nconst and: Operator = {\n canProcess: ({ key }) => {\n return key === \"$and\";\n },\n process: ({ value, args, processStatement }) => {\n const andArgs = {\n expression: \"\",\n attributeNames: {},\n attributeValues: {}\n };\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n processQuery(value[i], andArgs, processStatement);\n }\n } else {\n for (const [andKey, andValue] of Object.entries(value)) {\n processQuery({ [andKey]: andValue }, andArgs, processStatement);\n }\n }\n\n args.expression += \"(\" + andArgs.expression + \")\";\n Object.assign(args.attributeNames, andArgs.attributeNames);\n Object.assign(args.attributeValues, andArgs.attributeValues);\n }\n};\n\nexport default and;\n"],"mappings":";;;;;;;AAOA,MAAMA,YAAY,GAAG,CACjBC,KADiB,EAEjBC,OAFiB,EAGjBC,gBAHiB,KAIhB;EACD,MAAMC,IAA+B,GAAG;IACpCC,UAAU,EAAE,EADwB;IAEpCC,cAAc,EAAE,EAFoB;IAGpCC,eAAe,EAAE;EAHmB,CAAxC;EAMAJ,gBAAgB,CAAC;IAAEC,IAAF;IAAQH;EAAR,CAAD,CAAhB;EAEAO,MAAM,CAACC,MAAP,CAAcP,OAAO,CAACI,cAAtB,EAAsCF,IAAI,CAACE,cAA3C;EACAE,MAAM,CAACC,MAAP,CAAcP,OAAO,CAACK,eAAtB,EAAuCH,IAAI,CAACG,eAA5C;;EAEA,IAAIL,OAAO,CAACG,UAAR,KAAuB,EAA3B,EAA+B;IAC3BH,OAAO,CAACG,UAAR,GAAqBD,IAAI,CAACC,UAA1B;EACH,CAFD,MAEO;IACHH,OAAO,CAACG,UAAR,IAAsB,UAAUD,IAAI,CAACC,UAArC;EACH;AACJ,CArBD;;AAuBA,MAAMK,GAAa,GAAG;EAClBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAa;IACrB,OAAOA,GAAG,KAAK,MAAf;EACH,CAHiB;EAIlBC,OAAO,EAAE,CAAC;IAAEC,KAAF;IAASV,IAAT;IAAeD;EAAf,CAAD,KAAuC;IAC5C,MAAMD,OAAO,GAAG;MACZG,UAAU,EAAE,EADA;MAEZC,cAAc,EAAE,EAFJ;MAGZC,eAAe,EAAE;IAHL,CAAhB;;IAMA,IAAIQ,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAJ,EAA0B;MACtB,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,KAAK,CAACI,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;QACnCjB,YAAY,CAACc,KAAK,CAACG,CAAD,CAAN,EAAWf,OAAX,EAAoBC,gBAApB,CAAZ;MACH;IACJ,CAJD,MAIO;MACH,KAAK,MAAM,CAACgB,MAAD,EAASC,QAAT,CAAX,IAAiCZ,MAAM,CAACa,OAAP,CAAeP,KAAf,CAAjC,EAAwD;QACpDd,YAAY,CAAC;UAAE,CAACmB,MAAD,GAAUC;QAAZ,CAAD,EAAyBlB,OAAzB,EAAkCC,gBAAlC,CAAZ;MACH;IACJ;;IAEDC,IAAI,CAACC,UAAL,IAAmB,MAAMH,OAAO,CAACG,UAAd,GAA2B,GAA9C;IACAG,MAAM,CAACC,MAAP,CAAcL,IAAI,CAACE,cAAnB,EAAmCJ,OAAO,CAACI,cAA3C;IACAE,MAAM,CAACC,MAAP,CAAcL,IAAI,CAACG,eAAnB,EAAoCL,OAAO,CAACK,eAA5C;EACH;AAxBiB,CAAtB;eA2BeG,G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["processQuery","query","orArgs","processStatement","args","expression","attributeNames","attributeValues","Object","assign","or","canProcess","key","process","value","Array","isArray","i","length","orKey","orValue","entries"],"sources":["or.ts"],"sourcesContent":["import {\n Operator,\n ProcessStatementArgsParam,\n ProcessStatementCallable,\n ProcessStatementQueryParam\n} from \"~/types\";\n\nconst processQuery = (\n query: ProcessStatementQueryParam,\n orArgs: ProcessStatementArgsParam,\n processStatement: ProcessStatementCallable\n) => {\n const args: ProcessStatementArgsParam = {\n expression: \"\",\n attributeNames: {},\n attributeValues: {}\n };\n\n processStatement({ args, query });\n\n Object.assign(orArgs.attributeNames, args.attributeNames);\n Object.assign(orArgs.attributeValues, args.attributeValues);\n\n if (orArgs.expression === \"\") {\n orArgs.expression = args.expression;\n } else {\n orArgs.expression += \" or \" + args.expression;\n }\n};\n\nconst or: Operator = {\n canProcess: ({ key }) => {\n return key === \"$or\";\n },\n process: ({ value, args, processStatement }) => {\n const orArgs: ProcessStatementArgsParam = {\n expression: \"\",\n attributeNames: {},\n attributeValues: {}\n };\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n processQuery(value[i], orArgs, processStatement);\n }\n } else {\n for (const [orKey, orValue] of Object.entries(value)) {\n processQuery({ [orKey]: orValue }, orArgs, processStatement);\n }\n }\n\n args.expression += \"(\" + orArgs.expression + \")\";\n Object.assign(args.attributeNames, orArgs.attributeNames);\n Object.assign(args.attributeValues, orArgs.attributeValues);\n }\n};\n\nexport default or;\n"],"mappings":";;;;;;;AAOA,MAAMA,YAAY,GAAG,CACjBC,KADiB,EAEjBC,MAFiB,EAGjBC,gBAHiB,KAIhB;EACD,MAAMC,IAA+B,GAAG;IACpCC,UAAU,EAAE,EADwB;IAEpCC,cAAc,EAAE,EAFoB;IAGpCC,eAAe,EAAE;EAHmB,CAAxC;EAMAJ,gBAAgB,CAAC;IAAEC,IAAF;IAAQH;EAAR,CAAD,CAAhB;EAEAO,MAAM,CAACC,MAAP,CAAcP,MAAM,CAACI,cAArB,EAAqCF,IAAI,CAACE,cAA1C;EACAE,MAAM,CAACC,MAAP,CAAcP,MAAM,CAACK,eAArB,EAAsCH,IAAI,CAACG,eAA3C;;EAEA,IAAIL,MAAM,CAACG,UAAP,KAAsB,EAA1B,EAA8B;IAC1BH,MAAM,CAACG,UAAP,GAAoBD,IAAI,CAACC,UAAzB;EACH,CAFD,MAEO;IACHH,MAAM,CAACG,UAAP,IAAqB,SAASD,IAAI,CAACC,UAAnC;EACH;AACJ,CArBD;;AAuBA,MAAMK,EAAY,GAAG;EACjBC,UAAU,EAAE,CAAC;IAAEC;EAAF,CAAD,KAAa;IACrB,OAAOA,GAAG,KAAK,KAAf;EACH,CAHgB;EAIjBC,OAAO,EAAE,CAAC;IAAEC,KAAF;IAASV,IAAT;IAAeD;EAAf,CAAD,KAAuC;IAC5C,MAAMD,MAAiC,GAAG;MACtCG,UAAU,EAAE,EAD0B;MAEtCC,cAAc,EAAE,EAFsB;MAGtCC,eAAe,EAAE;IAHqB,CAA1C;;IAMA,IAAIQ,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAJ,EAA0B;MACtB,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,KAAK,CAACI,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;QACnCjB,YAAY,CAACc,KAAK,CAACG,CAAD,CAAN,EAAWf,MAAX,EAAmBC,gBAAnB,CAAZ;MACH;IACJ,CAJD,MAIO;MACH,KAAK,MAAM,CAACgB,KAAD,EAAQC,OAAR,CAAX,IAA+BZ,MAAM,CAACa,OAAP,CAAeP,KAAf,CAA/B,EAAsD;QAClDd,YAAY,CAAC;UAAE,CAACmB,KAAD,GAASC;QAAX,CAAD,EAAuBlB,MAAvB,EAA+BC,gBAA/B,CAAZ;MACH;IACJ;;IAEDC,IAAI,CAACC,UAAL,IAAmB,MAAMH,MAAM,CAACG,UAAb,GAA0B,GAA7C;IACAG,MAAM,CAACC,MAAP,CAAcL,IAAI,CAACE,cAAnB,EAAmCJ,MAAM,CAACI,cAA1C;IACAE,MAAM,CAACC,MAAP,CAAcL,IAAI,CAACG,eAAnB,EAAoCL,MAAM,CAACK,eAA3C;EACH;AAxBgB,CAArB;eA2BeG,E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/db-dynamodb",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-unstable.1e66d121db",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -10,28 +10,29 @@
|
|
|
10
10
|
"author": "Webiny Ltd",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@webiny/
|
|
14
|
-
"@webiny/
|
|
15
|
-
"@webiny/
|
|
16
|
-
"@webiny/handler-db": "0.0.0-
|
|
17
|
-
"@webiny/plugins": "0.0.0-
|
|
18
|
-
"date-fns": "2.
|
|
13
|
+
"@webiny/api": "0.0.0-unstable.1e66d121db",
|
|
14
|
+
"@webiny/db": "0.0.0-unstable.1e66d121db",
|
|
15
|
+
"@webiny/error": "0.0.0-unstable.1e66d121db",
|
|
16
|
+
"@webiny/handler-db": "0.0.0-unstable.1e66d121db",
|
|
17
|
+
"@webiny/plugins": "0.0.0-unstable.1e66d121db",
|
|
18
|
+
"date-fns": "2.29.3",
|
|
19
19
|
"dot-prop": "6.0.1",
|
|
20
|
-
"fuse.js": "6.
|
|
20
|
+
"fuse.js": "6.6.2",
|
|
21
21
|
"is-number": "7.0.0",
|
|
22
22
|
"lodash": "4.17.21"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@babel/cli": "^7.
|
|
26
|
-
"@babel/core": "^7.
|
|
27
|
-
"@
|
|
28
|
-
"@webiny/
|
|
29
|
-
"
|
|
30
|
-
"
|
|
25
|
+
"@babel/cli": "^7.19.3",
|
|
26
|
+
"@babel/core": "^7.19.3",
|
|
27
|
+
"@types/is-number": "^7.0.2",
|
|
28
|
+
"@webiny/cli": "^0.0.0-unstable.1e66d121db",
|
|
29
|
+
"@webiny/project-utils": "^0.0.0-unstable.1e66d121db",
|
|
30
|
+
"dynamodb-toolbox": "^0.3.5",
|
|
31
|
+
"jest": "^28.1.0",
|
|
31
32
|
"jest-dynalite": "^3.2.0",
|
|
32
33
|
"rimraf": "^3.0.2",
|
|
33
34
|
"ttypescript": "^1.5.12",
|
|
34
|
-
"typescript": "
|
|
35
|
+
"typescript": "4.7.4"
|
|
35
36
|
},
|
|
36
37
|
"publishConfig": {
|
|
37
38
|
"access": "public",
|
|
@@ -41,5 +42,5 @@
|
|
|
41
42
|
"build": "yarn webiny run build",
|
|
42
43
|
"watch": "yarn webiny run watch"
|
|
43
44
|
},
|
|
44
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "b670bf27c5039de1a2b0be764a09ba4cb94ad5e2"
|
|
45
46
|
}
|
|
@@ -2,19 +2,19 @@ import { Plugin } from "@webiny/plugins";
|
|
|
2
2
|
import { DynamoDBTypes } from "dynamodb-toolbox/dist/classes/Table";
|
|
3
3
|
import { EntityAttributeConfig, EntityCompositeAttributes } from "dynamodb-toolbox/dist/classes/Entity";
|
|
4
4
|
export declare type DefinitionParams = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;
|
|
5
|
-
export interface
|
|
5
|
+
export interface AttributePluginParams {
|
|
6
6
|
entity: string;
|
|
7
7
|
attribute: string;
|
|
8
8
|
params: DefinitionParams;
|
|
9
9
|
}
|
|
10
10
|
export declare abstract class AttributePlugin extends Plugin {
|
|
11
|
-
static readonly type
|
|
11
|
+
static readonly type: string;
|
|
12
12
|
private readonly _entity;
|
|
13
13
|
private readonly _attribute;
|
|
14
14
|
private readonly _params;
|
|
15
15
|
get entity(): string;
|
|
16
16
|
get attribute(): string;
|
|
17
|
-
constructor({ entity, attribute, params }:
|
|
17
|
+
constructor({ entity, attribute, params }: AttributePluginParams);
|
|
18
18
|
getDefinition(): Record<string, DefinitionParams>;
|
|
19
19
|
private validateReserved;
|
|
20
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["reservedFields","AttributePlugin","Plugin","entity","_entity","attribute","_attribute","constructor","params","validateReserved","_params","getDefinition","includes","WebinyError"],"sources":["AttributePlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { DynamoDBTypes } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\"];\n\nexport type DefinitionParams = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport interface AttributePluginParams {\n entity: string;\n attribute: string;\n params: DefinitionParams;\n}\n\nexport abstract class AttributePlugin extends Plugin {\n public static override readonly type: string = \"db.dynamodb.attribute\";\n private readonly _entity: string;\n private readonly _attribute: string;\n private readonly _params: DefinitionParams;\n\n public get entity(): string {\n return this._entity;\n }\n\n public get attribute(): string {\n return this._attribute;\n }\n\n public constructor({ entity, attribute, params }: AttributePluginParams) {\n super();\n\n this.validateReserved(attribute);\n\n this._entity = entity;\n this._attribute = attribute;\n this._params = params;\n }\n\n public getDefinition(): Record<string, DefinitionParams> {\n return {\n [this.attribute]: this._params\n };\n }\n\n private validateReserved(attribute: string): void {\n if (reservedFields.includes(attribute) === false) {\n return;\n }\n throw new WebinyError(\n `Attribute name \"${attribute}\" is not allowed.`,\n \"ATTRIBUTE_NOT_ALLOWED\",\n {\n attribute\n }\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAMA,MAAMA,cAAc,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,OAAb,EAAsB,MAAtB,CAAvB;;AAUO,MAAeC,eAAf,SAAuCC,eAAvC,CAA8C;EAMhC,IAANC,MAAM,GAAW;IACxB,OAAO,KAAKC,OAAZ;EACH;;EAEmB,IAATC,SAAS,GAAW;IAC3B,OAAO,KAAKC,UAAZ;EACH;;EAEMC,WAAW,CAAC;IAAEJ,MAAF;IAAUE,SAAV;IAAqBG;EAArB,CAAD,EAAuD;IACrE;IADqE;IAAA;IAAA;IAGrE,KAAKC,gBAAL,CAAsBJ,SAAtB;IAEA,KAAKD,OAAL,GAAeD,MAAf;IACA,KAAKG,UAAL,GAAkBD,SAAlB;IACA,KAAKK,OAAL,GAAeF,MAAf;EACH;;EAEMG,aAAa,GAAqC;IACrD,OAAO;MACH,CAAC,KAAKN,SAAN,GAAkB,KAAKK;IADpB,CAAP;EAGH;;EAEOD,gBAAgB,CAACJ,SAAD,EAA0B;IAC9C,IAAIL,cAAc,CAACY,QAAf,CAAwBP,SAAxB,MAAuC,KAA3C,EAAkD;MAC9C;IACH;;IACD,MAAM,IAAIQ,cAAJ,CACD,mBAAkBR,SAAU,mBAD3B,EAEF,uBAFE,EAGF;MACIA;IADJ,CAHE,CAAN;EAOH;;AAzCgD;;;8BAA/BJ,e,UAC6B,uB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ValueTransformPlugin,
|
|
1
|
+
import { ValueTransformPlugin, ValueTransformPluginParams } from "./ValueTransformPlugin";
|
|
2
2
|
export declare class DateTimeTransformPlugin extends ValueTransformPlugin {
|
|
3
|
-
constructor(params: Omit<
|
|
3
|
+
constructor(params: Omit<ValueTransformPluginParams, "transform">);
|
|
4
4
|
}
|