@webiny/db-dynamodb 0.0.0-mt-2 → 0.0.0-unstable.085ff6572f

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 (141) hide show
  1. package/BatchProcess.d.ts +27 -11
  2. package/BatchProcess.js +10 -42
  3. package/BatchProcess.js.map +1 -0
  4. package/DynamoDbDriver.d.ts +19 -11
  5. package/DynamoDbDriver.js +11 -44
  6. package/DynamoDbDriver.js.map +1 -0
  7. package/QueryGenerator.d.ts +15 -13
  8. package/QueryGenerator.js +16 -31
  9. package/QueryGenerator.js.map +1 -0
  10. package/index.d.ts +2 -0
  11. package/index.js +25 -4
  12. package/index.js.map +1 -0
  13. package/operators/comparison/beginsWith.js.map +1 -0
  14. package/operators/comparison/between.js.map +1 -0
  15. package/operators/comparison/eq.js +0 -2
  16. package/operators/comparison/eq.js.map +1 -0
  17. package/operators/comparison/gt.js.map +1 -0
  18. package/operators/comparison/gte.js.map +1 -0
  19. package/operators/comparison/lt.js.map +1 -0
  20. package/operators/comparison/lte.js.map +1 -0
  21. package/operators/index.js +1 -12
  22. package/operators/index.js.map +1 -0
  23. package/operators/logical/and.js +0 -5
  24. package/operators/logical/and.js.map +1 -0
  25. package/operators/logical/or.js +0 -5
  26. package/operators/logical/or.js.map +1 -0
  27. package/package.json +20 -19
  28. package/plugins/definitions/AttributePlugin.d.ts +3 -3
  29. package/plugins/definitions/AttributePlugin.js +1 -14
  30. package/plugins/definitions/AttributePlugin.js.map +1 -0
  31. package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -2
  32. package/plugins/definitions/DateTimeTransformPlugin.js +6 -20
  33. package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -0
  34. package/plugins/definitions/FieldPathPlugin.d.ts +3 -3
  35. package/plugins/definitions/FieldPathPlugin.js +3 -17
  36. package/plugins/definitions/FieldPathPlugin.js.map +1 -0
  37. package/plugins/definitions/FieldPlugin.d.ts +3 -3
  38. package/plugins/definitions/FieldPlugin.js +1 -17
  39. package/plugins/definitions/FieldPlugin.js.map +1 -0
  40. package/plugins/definitions/NumberTransformPlugin.d.ts +2 -2
  41. package/plugins/definitions/NumberTransformPlugin.js +3 -18
  42. package/plugins/definitions/NumberTransformPlugin.js.map +1 -0
  43. package/plugins/definitions/TimeTransformPlugin.d.ts +2 -2
  44. package/plugins/definitions/TimeTransformPlugin.js +3 -21
  45. package/plugins/definitions/TimeTransformPlugin.js.map +1 -0
  46. package/plugins/definitions/ValueFilterPlugin.d.ts +10 -10
  47. package/plugins/definitions/ValueFilterPlugin.js +1 -13
  48. package/plugins/definitions/ValueFilterPlugin.js.map +1 -0
  49. package/plugins/definitions/ValueTransformPlugin.d.ts +8 -8
  50. package/plugins/definitions/ValueTransformPlugin.js +3 -18
  51. package/plugins/definitions/ValueTransformPlugin.js.map +1 -0
  52. package/plugins/definitions/assignFields.js +1 -10
  53. package/plugins/definitions/assignFields.js.map +1 -0
  54. package/plugins/filters/andIn.d.ts +2 -2
  55. package/plugins/filters/andIn.js +4 -9
  56. package/plugins/filters/andIn.js.map +1 -0
  57. package/plugins/filters/between.d.ts +2 -2
  58. package/plugins/filters/between.js +4 -9
  59. package/plugins/filters/between.js.map +1 -0
  60. package/plugins/filters/contains.d.ts +2 -2
  61. package/plugins/filters/contains.js +3 -6
  62. package/plugins/filters/contains.js.map +1 -0
  63. package/plugins/filters/eq.d.ts +2 -2
  64. package/plugins/filters/eq.js +15 -4
  65. package/plugins/filters/eq.js.map +1 -0
  66. package/plugins/filters/fuzzy.d.ts +2 -2
  67. package/plugins/filters/fuzzy.js +9 -9
  68. package/plugins/filters/fuzzy.js.map +1 -0
  69. package/plugins/filters/gt.d.ts +2 -2
  70. package/plugins/filters/gt.js +3 -4
  71. package/plugins/filters/gt.js.map +1 -0
  72. package/plugins/filters/gte.d.ts +2 -2
  73. package/plugins/filters/gte.js +3 -4
  74. package/plugins/filters/gte.js.map +1 -0
  75. package/plugins/filters/in.d.ts +2 -2
  76. package/plugins/filters/in.js +4 -9
  77. package/plugins/filters/in.js.map +1 -0
  78. package/plugins/filters/index.js +3 -15
  79. package/plugins/filters/index.js.map +1 -0
  80. package/plugins/filters/lt.d.ts +2 -2
  81. package/plugins/filters/lt.js +3 -4
  82. package/plugins/filters/lt.js.map +1 -0
  83. package/plugins/filters/lte.d.ts +2 -2
  84. package/plugins/filters/lte.js +3 -4
  85. package/plugins/filters/lte.js.map +1 -0
  86. package/plugins/filters/startsWith.d.ts +3 -0
  87. package/plugins/filters/startsWith.js +29 -0
  88. package/plugins/filters/startsWith.js.map +1 -0
  89. package/plugins/index.js +1 -5
  90. package/plugins/index.js.map +1 -0
  91. package/statements/createKeyConditionExpressionArgs.d.ts +12 -9
  92. package/statements/createKeyConditionExpressionArgs.js +5 -8
  93. package/statements/createKeyConditionExpressionArgs.js.map +1 -0
  94. package/statements/processStatement.d.ts +3 -4
  95. package/statements/processStatement.js +7 -11
  96. package/statements/processStatement.js.map +1 -0
  97. package/types.d.ts +45 -8
  98. package/types.js.map +1 -0
  99. package/utils/attributes.d.ts +2 -2
  100. package/utils/attributes.js +3 -14
  101. package/utils/attributes.js.map +1 -0
  102. package/utils/batchRead.d.ts +4 -5
  103. package/utils/batchRead.js +43 -34
  104. package/utils/batchRead.js.map +1 -0
  105. package/utils/batchWrite.d.ts +4 -5
  106. package/utils/batchWrite.js +1 -7
  107. package/utils/batchWrite.js.map +1 -0
  108. package/utils/cleanup.d.ts +2 -2
  109. package/utils/cleanup.js +9 -27
  110. package/utils/cleanup.js.map +1 -0
  111. package/utils/createEntity.d.ts +14 -0
  112. package/utils/createEntity.js +60 -0
  113. package/utils/createEntity.js.map +1 -0
  114. package/utils/createTable.d.ts +7 -0
  115. package/utils/createTable.js +25 -0
  116. package/utils/createTable.js.map +1 -0
  117. package/utils/cursor.d.ts +2 -2
  118. package/utils/cursor.js +0 -6
  119. package/utils/cursor.js.map +1 -0
  120. package/utils/filter.d.ts +2 -2
  121. package/utils/filter.js +7 -43
  122. package/utils/filter.js.map +1 -0
  123. package/utils/get.d.ts +2 -2
  124. package/utils/get.js +0 -4
  125. package/utils/get.js.map +1 -0
  126. package/utils/index.d.ts +12 -0
  127. package/utils/index.js +137 -0
  128. package/utils/index.js.map +1 -0
  129. package/utils/listResponse.d.ts +1 -1
  130. package/utils/listResponse.js +7 -8
  131. package/utils/listResponse.js.map +1 -0
  132. package/utils/query.d.ts +8 -4
  133. package/utils/query.js +28 -36
  134. package/utils/query.js.map +1 -0
  135. package/utils/sort.d.ts +2 -2
  136. package/utils/sort.js +4 -23
  137. package/utils/sort.js.map +1 -0
  138. package/utils/table.js +1 -6
  139. package/utils/table.js.map +1 -0
  140. package/utils/documentClient.d.ts +0 -8
  141. 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: ({ message: string }: {
9
- message: any;
10
- }) => void;
28
+ rejectBuild: RejectBuildCallable;
11
29
  queryBuild: Promise<void>;
12
30
  resolveExecution: () => void;
13
- rejectExecution: ({ message: string }: {
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,11 +37,11 @@ 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: any, meta?: {}): () => any;
25
- addBatchWrite(args: any): () => any;
26
- addBatchDelete(args: any): () => any;
27
- addBatchGet(args: any): () => any;
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
- 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>;
45
+ startExecution(): import("aws-sdk/lib/request").Request<DocumentClient.BatchGetItemOutput, import("aws-sdk/lib/error").AWSError> | import("aws-sdk/lib/request").Request<DocumentClient.BatchWriteItemOutput, import("aws-sdk/lib/error").AWSError>;
30
46
  }
31
47
  export default BatchProcess;
package/BatchProcess.js CHANGED
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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; }
13
-
14
- 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; }
10
+ /**
11
+ * Remove this when no apps are using our internal db drivers anymore
12
+ */
13
+ // @ts-nocheck
15
14
 
16
15
  class BatchProcess {
17
16
  constructor(batch, documentClient) {
@@ -46,15 +45,12 @@ class BatchProcess {
46
45
  this.response = [];
47
46
  this.batchType;
48
47
  }
49
-
50
48
  waitStartExecution() {
51
49
  return this.queryBuild;
52
50
  }
53
-
54
51
  waitExecution() {
55
52
  return this.queryExecution;
56
53
  }
57
-
58
54
  addBatchOperation(type, args, meta = {}) {
59
55
  if (!this.batchType) {
60
56
  this.batchType = type;
@@ -64,62 +60,49 @@ class BatchProcess {
64
60
  this.rejectBuild({
65
61
  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
62
  });
67
- return;
63
+ return null;
68
64
  }
69
-
70
65
  this.operations.push([args, meta]);
71
66
  const index = this.operations.length - 1;
72
67
  return () => this.results[index];
73
68
  }
74
-
75
69
  addBatchWrite(args) {
76
70
  return this.addBatchOperation("batchWrite", args);
77
71
  }
78
-
79
72
  addBatchDelete(args) {
80
- return this.addBatchOperation("batchWrite", _objectSpread({}, args), {
73
+ return this.addBatchOperation("batchWrite", (0, _objectSpread2.default)({}, args), {
81
74
  delete: true
82
75
  });
83
76
  }
84
-
85
77
  addBatchGet(args) {
86
78
  return this.addBatchOperation("batchGet", args);
87
79
  }
88
-
89
80
  allOperationsAdded() {
90
81
  return this.operations.length === this.batch.operations.length;
91
82
  }
92
-
93
83
  startExecution() {
94
84
  this.resolveBuild();
95
85
  const documentClientArgs = {
96
86
  ReturnConsumedCapacity: "TOTAL",
97
87
  RequestItems: {}
98
88
  };
99
-
100
89
  const reject = e => {
101
90
  e.message = `An error occurred while executing "${this.batchType}" batch operation: ${e.message}`;
102
91
  return this.rejectExecution(e);
103
92
  };
104
-
105
93
  let resolve = response => {
106
94
  this.response = response;
107
95
  this.resolveExecution();
108
96
  };
109
-
110
97
  switch (this.batchType) {
111
98
  case "batchWrite":
112
99
  documentClientArgs.RequestItems = {};
113
-
114
100
  for (let i = 0; i < this.operations.length; i++) {
115
101
  const [args, meta] = this.operations[i];
116
-
117
102
  if (!documentClientArgs.RequestItems[args.table]) {
118
103
  documentClientArgs.RequestItems[args.table] = [];
119
104
  }
120
-
121
105
  const push = {};
122
-
123
106
  if (meta.delete) {
124
107
  push.DeleteRequest = {
125
108
  Key: args.query
@@ -129,58 +112,45 @@ class BatchProcess {
129
112
  Item: args.data
130
113
  };
131
114
  }
132
-
133
115
  documentClientArgs.RequestItems[args.table].push(push);
134
116
  }
135
-
136
117
  break;
137
-
138
118
  case "batchGet":
139
119
  documentClientArgs.RequestItems = {};
140
-
141
120
  for (let i = 0; i < this.operations.length; i++) {
142
121
  const [args] = this.operations[i];
143
-
144
122
  if (!documentClientArgs.RequestItems[args.table]) {
145
123
  documentClientArgs.RequestItems[args.table] = {
146
124
  Keys: []
147
125
  };
148
126
  }
149
-
150
127
  documentClientArgs.RequestItems[args.table].Keys.push(args.query);
151
128
  }
152
-
153
129
  resolve = response => {
154
130
  this.response = response;
155
- const results = []; // The results of batchGet aren't ordered so we have to figure out the order of results ourselves.
131
+ const results = [];
156
132
 
133
+ // The results of batchGet aren't ordered so we have to figure out the order of results ourselves.
157
134
  for (let i = 0; i < this.operations.length; i++) {
158
135
  const [args] = this.operations[i];
159
136
  const responseItems = response.Responses[args.table];
160
137
  let foundResult = null;
161
-
162
138
  outer: for (let j = 0; j < responseItems.length; j++) {
163
139
  const responseItem = responseItems[j];
164
-
165
140
  for (const queryKey in args.query) {
166
141
  if (typeof responseItem[queryKey] === "undefined" || args.query[queryKey] !== responseItem[queryKey]) {
167
142
  continue outer;
168
143
  }
169
144
  }
170
-
171
145
  foundResult = responseItem;
172
146
  }
173
-
174
147
  results.push(foundResult);
175
148
  }
176
-
177
149
  this.results = results;
178
150
  this.resolveExecution();
179
151
  };
180
-
181
152
  break;
182
153
  }
183
-
184
154
  return this.documentClient[this.batchType](documentClientArgs, (error, result) => {
185
155
  if (error) {
186
156
  reject(error);
@@ -189,8 +159,6 @@ class BatchProcess {
189
159
  }
190
160
  });
191
161
  }
192
-
193
162
  }
194
-
195
163
  var _default = BatchProcess;
196
164
  exports.default = _default;
@@ -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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"}
@@ -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
- id: any;
18
- operation: any;
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,23 +1,19 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
10
  var _dynamodb = require("aws-sdk/clients/dynamodb");
13
-
14
11
  var _BatchProcess = _interopRequireDefault(require("./BatchProcess"));
15
-
16
12
  var _QueryGenerator = _interopRequireDefault(require("./QueryGenerator"));
17
-
18
- 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; }
19
-
20
- 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; }
13
+ /**
14
+ * Remove this when no apps are using our internal db drivers anymore
15
+ */
16
+ // @ts-nocheck
21
17
 
22
18
  const LOG_KEYS = [{
23
19
  primary: true,
@@ -29,7 +25,6 @@ const LOG_KEYS = [{
29
25
  name: "SK"
30
26
  }]
31
27
  }];
32
-
33
28
  class DynamoDbDriver {
34
29
  constructor({
35
30
  documentClient
@@ -39,11 +34,9 @@ class DynamoDbDriver {
39
34
  this.batchProcesses = {};
40
35
  this.documentClient = documentClient || new _dynamodb.DocumentClient();
41
36
  }
42
-
43
37
  getClient() {
44
38
  return this.documentClient;
45
39
  }
46
-
47
40
  async create({
48
41
  table,
49
42
  data,
@@ -60,25 +53,21 @@ class DynamoDbDriver {
60
53
  response: result.$response
61
54
  }];
62
55
  }
63
-
64
56
  const batchProcess = this.getBatchProcess(batch);
65
57
  batchProcess.addBatchWrite({
66
58
  table,
67
59
  data
68
60
  });
69
-
70
61
  if (batchProcess.allOperationsAdded()) {
71
62
  batchProcess.startExecution();
72
63
  } else {
73
64
  await batchProcess.waitStartExecution();
74
65
  }
75
-
76
66
  await batchProcess.waitExecution();
77
67
  return [true, {
78
68
  response: batchProcess.response
79
69
  }];
80
70
  }
81
-
82
71
  async update({
83
72
  query,
84
73
  data,
@@ -93,15 +82,13 @@ class DynamoDbDriver {
93
82
  ExpressionAttributeValues: {}
94
83
  };
95
84
  const updateExpression = [];
96
-
97
85
  for (const key in data) {
98
86
  updateExpression.push(`#${key} = :${key}`);
99
87
  update.ExpressionAttributeNames[`#${key}`] = key;
100
88
  update.ExpressionAttributeValues[`:${key}`] = data[key];
101
89
  }
102
-
103
90
  update.UpdateExpression += updateExpression.join(", ");
104
- const result = await this.documentClient.update(_objectSpread({
91
+ const result = await this.documentClient.update((0, _objectSpread2.default)({
105
92
  TableName: table,
106
93
  Key: query,
107
94
  ReturnConsumedCapacity: meta ? "TOTAL" : "NONE"
@@ -110,25 +97,21 @@ class DynamoDbDriver {
110
97
  response: result.$response
111
98
  }];
112
99
  }
113
-
114
100
  const batchProcess = this.getBatchProcess(batch);
115
101
  batchProcess.addBatchWrite({
116
102
  table,
117
103
  data
118
104
  });
119
-
120
105
  if (batchProcess.allOperationsAdded()) {
121
106
  batchProcess.startExecution();
122
107
  } else {
123
108
  await batchProcess.waitStartExecution();
124
109
  }
125
-
126
110
  await batchProcess.waitExecution();
127
111
  return [true, {
128
112
  response: batchProcess.response
129
113
  }];
130
114
  }
131
-
132
115
  async delete({
133
116
  query,
134
117
  table,
@@ -145,25 +128,21 @@ class DynamoDbDriver {
145
128
  response: result.$response
146
129
  }];
147
130
  }
148
-
149
131
  const batchProcess = this.getBatchProcess(batch);
150
132
  batchProcess.addBatchDelete({
151
133
  table,
152
134
  query
153
135
  });
154
-
155
136
  if (batchProcess.allOperationsAdded()) {
156
137
  batchProcess.startExecution();
157
138
  } else {
158
139
  await batchProcess.waitStartExecution();
159
140
  }
160
-
161
141
  await batchProcess.waitExecution();
162
142
  return [true, {
163
143
  response: batchProcess.response
164
144
  }];
165
145
  }
166
-
167
146
  async read({
168
147
  table,
169
148
  query,
@@ -182,48 +161,41 @@ class DynamoDbDriver {
182
161
  limit,
183
162
  tableName: table
184
163
  });
185
- const response = await this.documentClient.query(_objectSpread(_objectSpread({}, queryParams), {}, {
164
+ const response = await this.documentClient.query((0, _objectSpread2.default)((0, _objectSpread2.default)({}, queryParams), {}, {
186
165
  ReturnConsumedCapacity: meta ? "TOTAL" : "NONE"
187
166
  })).promise();
188
-
189
167
  if (Array.isArray(response.Items)) {
190
168
  return [response.Items, {
191
169
  response: response.$response
192
170
  }];
193
171
  }
194
-
195
172
  return [[], {
196
173
  response: response.$response
197
174
  }];
198
- } // DynamoDb doesn't support batch queries, so we can immediately assume the GetRequest operation.
199
-
175
+ }
200
176
 
177
+ // DynamoDb doesn't support batch queries, so we can immediately assume the GetRequest operation.
201
178
  const batchProcess = this.getBatchProcess(batch);
202
179
  const getResult = batchProcess.addBatchGet({
203
180
  table,
204
181
  query
205
182
  });
206
-
207
183
  if (batchProcess.allOperationsAdded()) {
208
184
  batchProcess.startExecution();
209
185
  } else {
210
186
  await batchProcess.waitStartExecution();
211
187
  }
212
-
213
188
  await batchProcess.waitExecution();
214
189
  const result = getResult();
215
-
216
190
  if (result) {
217
191
  return [[result], {
218
192
  response: batchProcess.response
219
193
  }];
220
194
  }
221
-
222
195
  return [[], {
223
196
  response: batchProcess.response
224
197
  }];
225
198
  }
226
-
227
199
  async createLog({
228
200
  id,
229
201
  operation,
@@ -233,7 +205,7 @@ class DynamoDbDriver {
233
205
  await this.create({
234
206
  table: table,
235
207
  keys: LOG_KEYS,
236
- data: _objectSpread({
208
+ data: (0, _objectSpread2.default)({
237
209
  PK: "log",
238
210
  SK: id,
239
211
  id,
@@ -242,7 +214,6 @@ class DynamoDbDriver {
242
214
  });
243
215
  return [true, {}];
244
216
  }
245
-
246
217
  async readLogs({
247
218
  table
248
219
  }) {
@@ -257,16 +228,12 @@ class DynamoDbDriver {
257
228
  }
258
229
  });
259
230
  }
260
-
261
231
  getBatchProcess(__batch) {
262
232
  if (!this.batchProcesses[__batch.instance.id]) {
263
233
  this.batchProcesses[__batch.instance.id] = new _BatchProcess.default(__batch.instance, this.documentClient);
264
234
  }
265
-
266
235
  return this.batchProcesses[__batch.instance.id];
267
236
  }
268
-
269
237
  }
270
-
271
238
  var _default = DynamoDbDriver;
272
239
  exports.default = _default;
@@ -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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"}
@@ -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({ query, keys, sort, limit, tableName }: {
3
- query: any;
4
- keys: any;
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: any;
17
+ IndexName: string;
16
18
  };
17
- findQueryKey(query?: {}, keys?: any[]): any;
19
+ findQueryKey(query?: Query, keys?: QueryKeys): QueryKey | null;
18
20
  }
19
21
  export default QueryGenerator;