@webiny/db-dynamodb 0.0.0-unstable.9bd236cf5e → 0.0.0-unstable.9f53ea597d

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 (212) hide show
  1. package/DynamoDbDriver.d.ts +4 -8
  2. package/DynamoDbDriver.js +204 -240
  3. package/DynamoDbDriver.js.map +1 -1
  4. package/README.md +6 -142
  5. package/exports/api/db.d.ts +3 -0
  6. package/exports/api/db.js +3 -0
  7. package/feature/DynamoDBClient/DynamoDBClient.d.ts +9 -0
  8. package/feature/DynamoDBClient/DynamoDBClient.js +8 -0
  9. package/feature/DynamoDBClient/DynamoDBClient.js.map +1 -0
  10. package/feature/DynamoDBClient/abstractions.d.ts +8 -0
  11. package/feature/DynamoDBClient/abstractions.js +5 -0
  12. package/feature/DynamoDBClient/abstractions.js.map +1 -0
  13. package/feature/DynamoDBClient/index.d.ts +6 -0
  14. package/feature/DynamoDBClient/index.js +15 -0
  15. package/feature/DynamoDBClient/index.js.map +1 -0
  16. package/feature/FilterUtil/FilterUtil.d.ts +11 -0
  17. package/feature/FilterUtil/FilterUtil.js +26 -0
  18. package/feature/FilterUtil/FilterUtil.js.map +1 -0
  19. package/feature/FilterUtil/abstractions/FilterUtil.d.ts +17 -0
  20. package/feature/FilterUtil/abstractions/FilterUtil.js +5 -0
  21. package/feature/FilterUtil/abstractions/FilterUtil.js.map +1 -0
  22. package/feature/FilterUtil/createFilters.d.ts +22 -0
  23. package/feature/FilterUtil/createFilters.js +92 -0
  24. package/feature/FilterUtil/createFilters.js.map +1 -0
  25. package/feature/FilterUtil/extractWhereArgs.d.ts +7 -0
  26. package/feature/FilterUtil/extractWhereArgs.js +20 -0
  27. package/feature/FilterUtil/extractWhereArgs.js.map +1 -0
  28. package/feature/FilterUtil/feature.d.ts +4 -0
  29. package/feature/FilterUtil/feature.js +11 -0
  30. package/feature/FilterUtil/feature.js.map +1 -0
  31. package/feature/FilterUtil/index.d.ts +2 -0
  32. package/feature/FilterUtil/index.js +2 -0
  33. package/feature/ValueFilter/index.d.ts +3 -0
  34. package/feature/ValueFilter/index.js +1 -0
  35. package/index.d.ts +10 -3
  36. package/index.js +13 -28
  37. package/index.js.map +1 -1
  38. package/package.json +30 -24
  39. package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -2
  40. package/plugins/definitions/DateTimeTransformPlugin.js +20 -37
  41. package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -1
  42. package/plugins/definitions/FieldPlugin.d.ts +1 -1
  43. package/plugins/definitions/FieldPlugin.js +35 -45
  44. package/plugins/definitions/FieldPlugin.js.map +1 -1
  45. package/plugins/definitions/TimeTransformPlugin.d.ts +2 -2
  46. package/plugins/definitions/TimeTransformPlugin.js +26 -46
  47. package/plugins/definitions/TimeTransformPlugin.js.map +1 -1
  48. package/plugins/definitions/ValueTransformPlugin.d.ts +1 -6
  49. package/plugins/definitions/ValueTransformPlugin.js +19 -32
  50. package/plugins/definitions/ValueTransformPlugin.js.map +1 -1
  51. package/plugins/definitions/assignFields.js +14 -26
  52. package/plugins/definitions/assignFields.js.map +1 -1
  53. package/plugins/index.d.ts +5 -2
  54. package/plugins/index.js +5 -17
  55. package/store/entity.d.ts +4 -76
  56. package/store/entity.js +6 -39
  57. package/store/entity.js.map +1 -1
  58. package/store/keys.d.ts +1 -1
  59. package/store/keys.js +6 -19
  60. package/store/keys.js.map +1 -1
  61. package/store/types.d.ts +3 -4
  62. package/store/types.js +0 -7
  63. package/toolbox.d.ts +59 -2
  64. package/toolbox.js +1 -20
  65. package/types.js +0 -7
  66. package/utils/batch/batchRead.d.ts +2 -2
  67. package/utils/batch/batchRead.js +37 -64
  68. package/utils/batch/batchRead.js.map +1 -1
  69. package/utils/batch/batchWrite.d.ts +2 -2
  70. package/utils/batch/batchWrite.js +33 -59
  71. package/utils/batch/batchWrite.js.map +1 -1
  72. package/utils/batch/index.d.ts +3 -3
  73. package/utils/batch/index.js +3 -40
  74. package/utils/batch/types.d.ts +7 -2
  75. package/utils/batch/types.js +0 -7
  76. package/utils/cleanup.d.ts +1 -1
  77. package/utils/cleanup.js +33 -30
  78. package/utils/cleanup.js.map +1 -1
  79. package/utils/count.d.ts +1 -1
  80. package/utils/count.js +8 -20
  81. package/utils/count.js.map +1 -1
  82. package/utils/createEntity.d.ts +36 -54
  83. package/utils/createEntity.js +65 -44
  84. package/utils/createEntity.js.map +1 -1
  85. package/utils/createTable.d.ts +10 -7
  86. package/utils/createTable.js +26 -26
  87. package/utils/createTable.js.map +1 -1
  88. package/utils/cursor.js +7 -18
  89. package/utils/cursor.js.map +1 -1
  90. package/utils/delete.d.ts +1 -1
  91. package/utils/delete.js +6 -15
  92. package/utils/delete.js.map +1 -1
  93. package/utils/entity/Entity.d.ts +24 -22
  94. package/utils/entity/Entity.js +92 -74
  95. package/utils/entity/Entity.js.map +1 -1
  96. package/utils/entity/EntityReadBatch.d.ts +9 -8
  97. package/utils/entity/EntityReadBatch.js +25 -35
  98. package/utils/entity/EntityReadBatch.js.map +1 -1
  99. package/utils/entity/EntityReadBatchBuilder.d.ts +4 -4
  100. package/utils/entity/EntityReadBatchBuilder.js +13 -24
  101. package/utils/entity/EntityReadBatchBuilder.js.map +1 -1
  102. package/utils/entity/EntityWriteBatch.d.ts +9 -8
  103. package/utils/entity/EntityWriteBatch.js +37 -52
  104. package/utils/entity/EntityWriteBatch.js.map +1 -1
  105. package/utils/entity/EntityWriteBatchBuilder.d.ts +4 -4
  106. package/utils/entity/EntityWriteBatchBuilder.js +15 -24
  107. package/utils/entity/EntityWriteBatchBuilder.js.map +1 -1
  108. package/utils/entity/getEntity.d.ts +2 -2
  109. package/utils/entity/getEntity.js +8 -16
  110. package/utils/entity/getEntity.js.map +1 -1
  111. package/utils/entity/index.d.ts +7 -7
  112. package/utils/entity/index.js +7 -84
  113. package/utils/entity/types.d.ts +46 -22
  114. package/utils/entity/types.js +0 -7
  115. package/utils/get.d.ts +1 -1
  116. package/utils/get.js +13 -35
  117. package/utils/get.js.map +1 -1
  118. package/utils/index.d.ts +13 -17
  119. package/utils/index.js +13 -194
  120. package/utils/put.d.ts +2 -2
  121. package/utils/put.js +7 -16
  122. package/utils/put.js.map +1 -1
  123. package/utils/query.d.ts +5 -12
  124. package/utils/query.js +78 -143
  125. package/utils/query.js.map +1 -1
  126. package/utils/scan.d.ts +2 -2
  127. package/utils/scan.js +48 -82
  128. package/utils/scan.js.map +1 -1
  129. package/utils/sort.d.ts +1 -1
  130. package/utils/sort.js +36 -67
  131. package/utils/sort.js.map +1 -1
  132. package/utils/table/Table.d.ts +4 -5
  133. package/utils/table/Table.js +25 -35
  134. package/utils/table/Table.js.map +1 -1
  135. package/utils/table/TableReadBatch.d.ts +4 -4
  136. package/utils/table/TableReadBatch.js +39 -55
  137. package/utils/table/TableReadBatch.js.map +1 -1
  138. package/utils/table/TableWriteBatch.d.ts +3 -3
  139. package/utils/table/TableWriteBatch.js +44 -61
  140. package/utils/table/TableWriteBatch.js.map +1 -1
  141. package/utils/table/index.d.ts +4 -4
  142. package/utils/table/index.js +4 -51
  143. package/utils/table/types.d.ts +8 -8
  144. package/utils/table/types.js +0 -7
  145. package/plugins/definitions/AttributePlugin.d.ts +0 -18
  146. package/plugins/definitions/AttributePlugin.js +0 -46
  147. package/plugins/definitions/AttributePlugin.js.map +0 -1
  148. package/plugins/definitions/FieldPathPlugin.d.ts +0 -22
  149. package/plugins/definitions/FieldPathPlugin.js +0 -34
  150. package/plugins/definitions/FieldPathPlugin.js.map +0 -1
  151. package/plugins/definitions/ValueFilterPlugin.d.ts +0 -22
  152. package/plugins/definitions/ValueFilterPlugin.js +0 -43
  153. package/plugins/definitions/ValueFilterPlugin.js.map +0 -1
  154. package/plugins/filters/andIn.d.ts +0 -3
  155. package/plugins/filters/andIn.js +0 -31
  156. package/plugins/filters/andIn.js.map +0 -1
  157. package/plugins/filters/between.d.ts +0 -3
  158. package/plugins/filters/between.js +0 -32
  159. package/plugins/filters/between.js.map +0 -1
  160. package/plugins/filters/contains.d.ts +0 -3
  161. package/plugins/filters/contains.js +0 -59
  162. package/plugins/filters/contains.js.map +0 -1
  163. package/plugins/filters/eq.d.ts +0 -3
  164. package/plugins/filters/eq.js +0 -32
  165. package/plugins/filters/eq.js.map +0 -1
  166. package/plugins/filters/fuzzy.d.ts +0 -3
  167. package/plugins/filters/fuzzy.js +0 -36
  168. package/plugins/filters/fuzzy.js.map +0 -1
  169. package/plugins/filters/gt.d.ts +0 -3
  170. package/plugins/filters/gt.js +0 -20
  171. package/plugins/filters/gt.js.map +0 -1
  172. package/plugins/filters/gte.d.ts +0 -3
  173. package/plugins/filters/gte.js +0 -20
  174. package/plugins/filters/gte.js.map +0 -1
  175. package/plugins/filters/in.d.ts +0 -3
  176. package/plugins/filters/in.js +0 -31
  177. package/plugins/filters/in.js.map +0 -1
  178. package/plugins/filters/index.d.ts +0 -2
  179. package/plugins/filters/index.js +0 -22
  180. package/plugins/filters/index.js.map +0 -1
  181. package/plugins/filters/lt.d.ts +0 -3
  182. package/plugins/filters/lt.js +0 -20
  183. package/plugins/filters/lt.js.map +0 -1
  184. package/plugins/filters/lte.d.ts +0 -3
  185. package/plugins/filters/lte.js +0 -20
  186. package/plugins/filters/lte.js.map +0 -1
  187. package/plugins/filters/startsWith.d.ts +0 -3
  188. package/plugins/filters/startsWith.js +0 -40
  189. package/plugins/filters/startsWith.js.map +0 -1
  190. package/plugins/index.js.map +0 -1
  191. package/store/types.js.map +0 -1
  192. package/toolbox.js.map +0 -1
  193. package/types.js.map +0 -1
  194. package/utils/attributes.d.ts +0 -10
  195. package/utils/attributes.js +0 -27
  196. package/utils/attributes.js.map +0 -1
  197. package/utils/batch/index.js.map +0 -1
  198. package/utils/batch/types.js.map +0 -1
  199. package/utils/entity/index.js.map +0 -1
  200. package/utils/entity/types.js.map +0 -1
  201. package/utils/filter.d.ts +0 -12
  202. package/utils/filter.js +0 -181
  203. package/utils/filter.js.map +0 -1
  204. package/utils/index.js.map +0 -1
  205. package/utils/listResponse.d.ts +0 -13
  206. package/utils/listResponse.js +0 -31
  207. package/utils/listResponse.js.map +0 -1
  208. package/utils/table/index.js.map +0 -1
  209. package/utils/table/types.js.map +0 -1
  210. package/utils/update.d.ts +0 -12
  211. package/utils/update.js +0 -19
  212. package/utils/update.js.map +0 -1
@@ -1,17 +1,13 @@
1
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
2
  import type { DbDriver, GetValueResult, GetValuesResult, IListValuesParams, ListValuesResult, RemoveValueResult, RemoveValuesResult, StorageKey, StoreValueResult, StoreValuesResult } from "@webiny/db";
3
- import type { Entity } from "dynamodb-toolbox";
4
- import type { Table } from "./utils/createTable";
5
- import type { GenericRecord } from "@webiny/api/types";
3
+ import type { GenericRecord } from "@webiny/api/types.js";
6
4
  interface ConstructorArgs {
7
5
  documentClient: DynamoDBDocument;
8
6
  }
9
7
  declare class DynamoDbDriver implements DbDriver<DynamoDBDocument> {
10
8
  readonly documentClient: DynamoDBDocument;
11
- private _table;
12
- private _entity;
13
- table(): Table;
14
- entity(): Entity;
9
+ readonly table: import("./utils").ITable<string, "PK", "SK">;
10
+ readonly entity: import("./store/types").IStoreEntity;
15
11
  constructor({ documentClient }: ConstructorArgs);
16
12
  getClient(): DynamoDBDocument;
17
13
  storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>>;
package/DynamoDbDriver.js CHANGED
@@ -1,264 +1,228 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _createTable = require("./utils/createTable");
8
- var _entity = require("./store/entity");
9
- var _utils = require("./utils");
10
- var _keys = require("./store/keys");
1
+ import { createTable } from "./utils/createTable.js";
2
+ import { createEntity } from "./store/entity.js";
3
+ import { createPartitionKey, createSortKey, createType } from "./store/keys.js";
11
4
  class DynamoDbDriver {
12
- _table = undefined;
13
- _entity = undefined;
14
- table() {
15
- if (this._table) {
16
- return this._table;
17
- }
18
- this._table = (0, _createTable.createTable)({
19
- documentClient: this.documentClient
20
- });
21
- return this._table;
22
- }
23
- entity() {
24
- if (this._entity) {
25
- return this._entity;
5
+ constructor({ documentClient }){
6
+ this.documentClient = documentClient;
7
+ this.table = createTable({
8
+ name: process.env.DB_TABLE,
9
+ documentClient
10
+ });
11
+ this.entity = createEntity({
12
+ table: this.table
13
+ });
26
14
  }
27
- this._entity = (0, _entity.createEntity)({
28
- table: this.table()
29
- });
30
- return this._entity;
31
- }
32
- constructor({
33
- documentClient
34
- }) {
35
- this.documentClient = documentClient;
36
- }
37
- getClient() {
38
- return this.documentClient;
39
- }
40
- async storeValue(key, input) {
41
- let value;
42
- try {
43
- value = JSON.stringify(input);
44
- } catch (ex) {
45
- return {
46
- key,
47
- error: ex
48
- };
15
+ getClient() {
16
+ return this.documentClient;
49
17
  }
50
- try {
51
- await (0, _utils.put)({
52
- entity: this.entity(),
53
- item: {
54
- PK: (0, _keys.createPartitionKey)(),
55
- SK: (0, _keys.createSortKey)({
56
- key
57
- }),
58
- TYPE: (0, _keys.createType)(),
59
- key,
60
- value
18
+ async storeValue(key, input) {
19
+ let value;
20
+ try {
21
+ value = JSON.stringify(input);
22
+ } catch (ex) {
23
+ return {
24
+ key,
25
+ error: ex
26
+ };
27
+ }
28
+ try {
29
+ await this.entity.put({
30
+ PK: createPartitionKey(),
31
+ SK: createSortKey({
32
+ key
33
+ }),
34
+ TYPE: createType(),
35
+ data: {
36
+ key,
37
+ value
38
+ }
39
+ });
40
+ return {
41
+ key,
42
+ data: input
43
+ };
44
+ } catch (ex) {
45
+ return {
46
+ key,
47
+ error: ex
48
+ };
61
49
  }
62
- });
63
- return {
64
- key,
65
- data: input
66
- };
67
- } catch (ex) {
68
- return {
69
- key,
70
- error: ex
71
- };
72
50
  }
73
- }
74
- async storeValues(values) {
75
- const keys = Object.keys(values);
76
- try {
77
- const batch = keys.map(key => {
78
- const input = values[key];
79
- let value;
51
+ async storeValues(values) {
52
+ const keys = Object.keys(values);
53
+ const batchWrite = this.entity.createEntityWriter();
80
54
  try {
81
- value = JSON.stringify(input);
55
+ for (const key of keys){
56
+ const input = values[key];
57
+ let value;
58
+ try {
59
+ value = JSON.stringify(input);
60
+ } catch (ex) {
61
+ throw ex;
62
+ }
63
+ batchWrite.put({
64
+ PK: createPartitionKey(),
65
+ SK: createSortKey({
66
+ key
67
+ }),
68
+ TYPE: createType(),
69
+ data: {
70
+ key,
71
+ value
72
+ }
73
+ });
74
+ }
75
+ await batchWrite.execute();
76
+ return {
77
+ keys,
78
+ data: values
79
+ };
82
80
  } catch (ex) {
83
- throw ex;
81
+ return {
82
+ keys,
83
+ error: ex
84
+ };
84
85
  }
85
- const item = {
86
- PK: (0, _keys.createPartitionKey)(),
87
- SK: (0, _keys.createSortKey)({
88
- key
89
- }),
90
- TYPE: (0, _keys.createType)(),
91
- key,
92
- value
93
- };
94
- return this.entity().putBatch(item);
95
- });
96
- await (0, _utils.batchWriteAll)({
97
- table: this.table(),
98
- items: batch
99
- });
100
- return {
101
- keys,
102
- data: values
103
- };
104
- } catch (ex) {
105
- return {
106
- keys,
107
- error: ex
108
- };
109
86
  }
110
- }
111
- async getValue(key) {
112
- try {
113
- const result = await (0, _utils.get)({
114
- entity: this.entity(),
115
- keys: {
116
- PK: (0, _keys.createPartitionKey)(),
117
- SK: (0, _keys.createSortKey)({
118
- key
119
- })
87
+ async getValue(key) {
88
+ try {
89
+ const result = await this.entity.get({
90
+ PK: createPartitionKey(),
91
+ SK: createSortKey({
92
+ key
93
+ })
94
+ });
95
+ return {
96
+ key,
97
+ data: result?.data?.value ? JSON.parse(result.data.value) : null
98
+ };
99
+ } catch (ex) {
100
+ return {
101
+ key,
102
+ error: ex
103
+ };
120
104
  }
121
- });
122
- return {
123
- key,
124
- data: result ? JSON.parse(result.value) : null
125
- };
126
- } catch (ex) {
127
- return {
128
- key,
129
- error: ex
130
- };
131
105
  }
132
- }
133
- async getValues(input) {
134
- const keys = [...input];
135
- const batch = keys.map(key => {
136
- return this.entity().getBatch({
137
- PK: (0, _keys.createPartitionKey)(),
138
- SK: (0, _keys.createSortKey)({
139
- key
140
- })
141
- });
142
- });
143
- try {
144
- const results = await (0, _utils.batchReadAll)({
145
- table: this.table(),
146
- items: batch
147
- });
148
- const data = keys.reduce((collection, key) => {
149
- const result = results.find(item => {
150
- return item.PK === (0, _keys.createPartitionKey)() && item.SK === (0, _keys.createSortKey)({
151
- key
152
- });
106
+ async getValues(input) {
107
+ const keys = [
108
+ ...input
109
+ ];
110
+ const batchRead = this.entity.createEntityReader({
111
+ read: keys.map((key)=>({
112
+ PK: createPartitionKey(),
113
+ SK: createSortKey({
114
+ key
115
+ })
116
+ }))
153
117
  });
154
- if (!result?.value) {
155
- // @ts-expect-error
156
- collection[key] = null;
157
- return collection;
158
- }
159
118
  try {
160
- // @ts-expect-error
161
- collection[key] = JSON.parse(result.value);
162
- } catch {
163
- // @ts-expect-error
164
- collection[key] = null;
119
+ const results = await batchRead.execute();
120
+ const data = keys.reduce((collection, initialKey)=>{
121
+ const key = initialKey;
122
+ const result = results.find((item)=>item.PK === createPartitionKey() && item.SK === createSortKey({
123
+ key
124
+ }));
125
+ if (!result?.data?.value) {
126
+ collection[key] = null;
127
+ return collection;
128
+ }
129
+ try {
130
+ collection[key] = JSON.parse(result.data.value);
131
+ } catch {
132
+ collection[key] = null;
133
+ }
134
+ return collection;
135
+ }, {});
136
+ return {
137
+ keys,
138
+ data
139
+ };
140
+ } catch (ex) {
141
+ return {
142
+ keys,
143
+ error: ex
144
+ };
165
145
  }
166
- return collection;
167
- }, {});
168
- return {
169
- keys,
170
- data
171
- };
172
- } catch (ex) {
173
- return {
174
- keys,
175
- error: ex
176
- };
177
146
  }
178
- }
179
- async listValues(params) {
180
- try {
181
- const partitionKey = (0, _keys.createPartitionKey)();
182
- const options = {
183
- ...params
184
- };
185
- const results = await (0, _utils.queryAll)({
186
- entity: this.entity(),
187
- partitionKey,
188
- options
189
- });
190
- const data = results.reduce((collection, item) => {
147
+ async listValues(params) {
191
148
  try {
192
- // @ts-expect-error
193
- collection[item.key] = JSON.parse(item.value);
149
+ const partitionKey = createPartitionKey();
150
+ const options = {
151
+ ...params
152
+ };
153
+ const results = await this.entity.queryAll({
154
+ partitionKey,
155
+ options
156
+ });
157
+ const data = results.reduce((collection, item)=>{
158
+ const key = item.data.key;
159
+ try {
160
+ collection[key] = JSON.parse(item.data.value);
161
+ } catch {
162
+ collection[key] = null;
163
+ }
164
+ return collection;
165
+ }, {});
166
+ return {
167
+ keys: Object.keys(data),
168
+ data
169
+ };
194
170
  } catch (ex) {
195
- // @ts-expect-error
196
- collection[item.key] = null;
171
+ return {
172
+ error: ex
173
+ };
197
174
  }
198
- return collection;
199
- }, {});
200
- return {
201
- keys: Object.keys(data),
202
- data
203
- };
204
- } catch (ex) {
205
- return {
206
- error: ex
207
- };
208
175
  }
209
- }
210
- async removeValue(key) {
211
- const result = await this.getValue(key);
212
- if (result.error) {
213
- return {
214
- key,
215
- error: result.error
216
- };
217
- }
218
- try {
219
- await this.entity().delete({
220
- PK: (0, _keys.createPartitionKey)(),
221
- SK: (0, _keys.createSortKey)({
222
- key
223
- })
224
- });
225
- return {
226
- key,
227
- data: result.data
228
- };
229
- } catch (ex) {
230
- return {
231
- key,
232
- error: ex
233
- };
176
+ async removeValue(key) {
177
+ const result = await this.getValue(key);
178
+ if (result.error) return {
179
+ key,
180
+ error: result.error
181
+ };
182
+ try {
183
+ await this.entity.delete({
184
+ PK: createPartitionKey(),
185
+ SK: createSortKey({
186
+ key
187
+ })
188
+ });
189
+ return {
190
+ key,
191
+ data: result.data
192
+ };
193
+ } catch (ex) {
194
+ return {
195
+ key,
196
+ error: ex
197
+ };
198
+ }
234
199
  }
235
- }
236
- async removeValues(input) {
237
- const keys = [...input];
238
- const batch = keys.map(key => {
239
- return this.entity().deleteBatch({
240
- PK: (0, _keys.createPartitionKey)(),
241
- SK: (0, _keys.createSortKey)({
242
- key
243
- })
244
- });
245
- });
246
- try {
247
- await (0, _utils.batchWriteAll)({
248
- table: this.table(),
249
- items: batch
250
- });
251
- return {
252
- keys
253
- };
254
- } catch (ex) {
255
- return {
256
- keys,
257
- error: ex
258
- };
200
+ async removeValues(input) {
201
+ const keys = [
202
+ ...input
203
+ ];
204
+ const batchDelete = this.entity.createEntityWriter({
205
+ delete: keys.map((key)=>({
206
+ PK: createPartitionKey(),
207
+ SK: createSortKey({
208
+ key
209
+ })
210
+ }))
211
+ });
212
+ try {
213
+ await batchDelete.execute();
214
+ return {
215
+ keys
216
+ };
217
+ } catch (ex) {
218
+ return {
219
+ keys,
220
+ error: ex
221
+ };
222
+ }
259
223
  }
260
- }
261
224
  }
262
- var _default = exports.default = DynamoDbDriver;
225
+ const src_DynamoDbDriver = DynamoDbDriver;
226
+ export default src_DynamoDbDriver;
263
227
 
264
228
  //# sourceMappingURL=DynamoDbDriver.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_createTable","require","_entity","_utils","_keys","DynamoDbDriver","_table","undefined","table","createTable","documentClient","entity","createEntity","constructor","getClient","storeValue","key","input","value","JSON","stringify","ex","error","put","item","PK","createPartitionKey","SK","createSortKey","TYPE","createType","data","storeValues","values","keys","Object","batch","map","putBatch","batchWriteAll","items","getValue","result","get","parse","getValues","getBatch","results","batchReadAll","reduce","collection","find","listValues","params","partitionKey","options","queryAll","removeValue","delete","removeValues","deleteBatch","_default","exports","default"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type {\n DbDriver,\n GetValueResult,\n GetValuesResult,\n IListValuesParams,\n ListValuesResult,\n RemoveValueResult,\n RemoveValuesResult,\n StorageKey,\n StoreValueResult,\n StoreValuesResult\n} from \"@webiny/db\";\nimport type { Entity } from \"dynamodb-toolbox\";\nimport type { Table } from \"~/utils/createTable\";\nimport { createTable } from \"~/utils/createTable\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport { createEntity } from \"~/store/entity\";\nimport { batchReadAll, batchWriteAll, get, put, queryAll } from \"~/utils\";\nimport { createPartitionKey, createSortKey, createType } from \"~/store/keys\";\nimport type { IStoreItem } from \"~/store/types\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBDocument;\n}\n\nclass DynamoDbDriver implements DbDriver<DynamoDBDocument> {\n public readonly documentClient: DynamoDBDocument;\n\n private _table: Table | undefined = undefined;\n private _entity: Entity | undefined = undefined;\n\n public table(): Table {\n if (this._table) {\n return this._table;\n }\n this._table = createTable({\n documentClient: this.documentClient\n });\n return this._table;\n }\n\n public entity(): Entity {\n if (this._entity) {\n return this._entity;\n }\n this._entity = createEntity({\n table: this.table()\n });\n return this._entity;\n }\n\n constructor({ documentClient }: ConstructorArgs) {\n this.documentClient = documentClient;\n }\n\n public getClient() {\n return this.documentClient;\n }\n\n public async storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>> {\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n\n try {\n await put<IStoreItem>({\n entity: this.entity(),\n item: {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n }\n });\n\n return {\n key,\n data: input\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async storeValues<V extends GenericRecord<StorageKey>>(\n values: V\n ): Promise<StoreValuesResult<V>> {\n const keys = Object.keys(values);\n try {\n const batch = keys.map(key => {\n const input = values[key];\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n throw ex;\n }\n const item: IStoreItem = {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n };\n return this.entity().putBatch(item);\n });\n\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys,\n data: values\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async getValue<V>(key: StorageKey): Promise<GetValueResult<V>> {\n try {\n const result = await get<IStoreItem>({\n entity: this.entity(),\n keys: {\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n }\n });\n return {\n key,\n data: result ? JSON.parse(result.value) : null\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async getValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<GetValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().getBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n const results = await batchReadAll<IStoreItem>({\n table: this.table(),\n items: batch\n });\n const data = keys.reduce((collection, key) => {\n const result = results.find(item => {\n return item.PK === createPartitionKey() && item.SK === createSortKey({ key });\n });\n if (!result?.value) {\n // @ts-expect-error\n collection[key] = null;\n return collection;\n }\n try {\n // @ts-expect-error\n collection[key] = JSON.parse(result.value);\n } catch {\n // @ts-expect-error\n collection[key] = null;\n }\n\n return collection;\n }, {} as V);\n return {\n keys,\n data\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>> {\n try {\n const partitionKey = createPartitionKey();\n const options = {\n ...params\n };\n const results = await queryAll<IStoreItem>({\n entity: this.entity(),\n partitionKey,\n options\n });\n\n const data = results.reduce((collection, item) => {\n try {\n // @ts-expect-error\n collection[item.key] = JSON.parse(item.value);\n } catch (ex) {\n // @ts-expect-error\n collection[item.key] = null;\n }\n\n return collection;\n }, {} as V);\n\n return {\n keys: Object.keys(data),\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n }\n\n public async removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>> {\n const result = await this.getValue<V>(key);\n if (result.error) {\n return {\n key,\n error: result.error\n };\n }\n try {\n await this.entity().delete({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n return {\n key,\n data: result.data\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n\n public async removeValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<RemoveValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().deleteBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DynamoDbDriver.js","sources":["../src/DynamoDbDriver.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type {\n DbDriver,\n GetValueResult,\n GetValuesResult,\n IListValuesParams,\n ListValuesResult,\n RemoveValueResult,\n RemoveValuesResult,\n StorageKey,\n StoreValueResult,\n StoreValuesResult\n} from \"@webiny/db\";\nimport { createTable } from \"~/utils/createTable.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport { createEntity } from \"~/store/entity.js\";\nimport { createPartitionKey, createSortKey, createType } from \"~/store/keys.js\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBDocument;\n}\n\nclass DynamoDbDriver implements DbDriver<DynamoDBDocument> {\n public readonly documentClient;\n\n public readonly table;\n public readonly entity;\n\n constructor({ documentClient }: ConstructorArgs) {\n this.documentClient = documentClient;\n this.table = createTable({\n name: process.env.DB_TABLE as string,\n documentClient\n });\n this.entity = createEntity({\n table: this.table\n });\n }\n\n public getClient() {\n return this.documentClient;\n }\n\n public async storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>> {\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n\n try {\n await this.entity.put({\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n data: {\n key,\n value\n }\n });\n\n return {\n key,\n data: input\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async storeValues<V extends GenericRecord<StorageKey>>(\n values: V\n ): Promise<StoreValuesResult<V>> {\n const keys = Object.keys(values);\n\n const batchWrite = this.entity.createEntityWriter();\n try {\n for (const key of keys) {\n const input = values[key];\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n throw ex;\n }\n batchWrite.put({\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n data: {\n key,\n value\n }\n });\n }\n\n await batchWrite.execute();\n return {\n keys,\n data: values\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async getValue<V>(key: StorageKey): Promise<GetValueResult<V>> {\n try {\n const result = await this.entity.get({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n return {\n key,\n data: result?.data?.value ? JSON.parse(result.data.value) : null\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async getValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<GetValuesResult<V>> {\n const keys = [...input] as string[];\n\n const batchRead = this.entity.createEntityReader({\n read: keys.map(key => {\n return {\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n };\n })\n });\n\n try {\n const results = await batchRead.execute();\n const data = keys.reduce((collection, initialKey) => {\n const key = initialKey as keyof V;\n const result = results.find(item => {\n return item.PK === createPartitionKey() && item.SK === createSortKey({ key });\n });\n if (!result?.data?.value) {\n collection[key] = null;\n return collection;\n }\n try {\n collection[key] = JSON.parse(result.data.value);\n } catch {\n collection[key] = null;\n }\n\n return collection;\n }, {} as GenericRecord);\n return {\n keys,\n data\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>> {\n try {\n const partitionKey = createPartitionKey();\n const options = {\n ...params\n };\n const results = await this.entity.queryAll({\n partitionKey,\n options\n });\n\n const data = results.reduce((collection, item) => {\n const key = item.data.key as keyof V;\n try {\n collection[key] = JSON.parse(item.data.value);\n } catch {\n collection[key] = null;\n }\n\n return collection;\n }, {} as GenericRecord);\n\n return {\n keys: Object.keys(data),\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n }\n\n public async removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>> {\n const result = await this.getValue<V>(key);\n if (result.error) {\n return {\n key,\n error: result.error\n };\n }\n try {\n await this.entity.delete({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n return {\n key,\n data: result.data\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n\n public async removeValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<RemoveValuesResult<V>> {\n const keys = [...input] as string[];\n\n const batchDelete = this.entity.createEntityWriter({\n delete: keys.map(key => {\n return {\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n };\n })\n });\n\n try {\n await batchDelete.execute();\n return {\n keys\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n}\n\nexport default DynamoDbDriver;\n"],"names":["DynamoDbDriver","documentClient","createTable","process","createEntity","key","input","value","JSON","ex","createPartitionKey","createSortKey","createType","values","keys","Object","batchWrite","result","batchRead","results","data","collection","initialKey","item","params","partitionKey","options","batchDelete"],"mappings":"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"}