@webiny/api-prerendering-service-so-ddb 0.0.0-mt-2 → 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.
Files changed (39) hide show
  1. package/definitions/queueJob.d.ts +2 -2
  2. package/definitions/queueJob.js +3 -7
  3. package/definitions/queueJob.js.map +1 -0
  4. package/definitions/render.d.ts +2 -2
  5. package/definitions/render.js +6 -16
  6. package/definitions/render.js.map +1 -0
  7. package/definitions/{tagUrlLink.d.ts → renderLegacy.d.ts} +2 -2
  8. package/definitions/renderLegacy.js +52 -0
  9. package/definitions/renderLegacy.js.map +1 -0
  10. package/definitions/settings.d.ts +8 -0
  11. package/definitions/settings.js +40 -0
  12. package/definitions/settings.js.map +1 -0
  13. package/definitions/table.d.ts +3 -2
  14. package/definitions/table.js +7 -1
  15. package/definitions/table.js.map +1 -0
  16. package/definitions/tagPathLink.d.ts +9 -0
  17. package/definitions/tagPathLink.js +46 -0
  18. package/definitions/tagPathLink.js.map +1 -0
  19. package/definitions/tagPathLinkLegacy.d.ts +9 -0
  20. package/definitions/tagPathLinkLegacy.js +49 -0
  21. package/definitions/tagPathLinkLegacy.js.map +1 -0
  22. package/index.js +22 -15
  23. package/index.js.map +1 -0
  24. package/operations/queueJob.d.ts +6 -0
  25. package/operations/{queueJob/index.js → queueJob.js} +5 -10
  26. package/operations/queueJob.js.map +1 -0
  27. package/operations/render.d.ts +21 -0
  28. package/operations/{render/index.js → render.js} +122 -83
  29. package/operations/render.js.map +1 -0
  30. package/operations/settings.d.ts +6 -0
  31. package/operations/settings.js +75 -0
  32. package/operations/settings.js.map +1 -0
  33. package/package.json +17 -17
  34. package/types.d.ts +8 -2
  35. package/types.js +2 -1
  36. package/types.js.map +1 -0
  37. package/definitions/tagUrlLink.js +0 -53
  38. package/operations/queueJob/index.d.ts +0 -6
  39. package/operations/render/index.d.ts +0 -16
@@ -1,13 +1,13 @@
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.createRenderStorageOperations = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _error = _interopRequireDefault(require("@webiny/error"));
13
13
 
@@ -21,66 +21,87 @@ var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
21
21
 
22
22
  var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
23
23
 
24
- 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; }
25
-
26
- 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; }
27
-
28
24
  const createRenderStorageOperations = params => {
29
25
  const {
30
26
  entity,
31
- tagUrlLinkEntity
27
+ tagPathLinkEntity
32
28
  } = params;
33
29
 
34
- const createRenderPartitionKey = namespace => {
30
+ const createRenderPartitionKey = (tenant, path) => {
35
31
  /**
36
32
  * For backwards compatibility remove the T# if it exists.
37
33
  */
38
- if (namespace.startsWith("T#")) {
39
- namespace = namespace.replace(/^T#/, "");
34
+ if (tenant.startsWith("T#")) {
35
+ tenant = tenant.replace(/^T#/, "");
40
36
  }
41
37
 
42
- return `T#${namespace}#PS#RENDER`;
38
+ return `T#${tenant}#PS#RENDER#${path}`;
39
+ };
40
+
41
+ const createRenderSortKey = () => {
42
+ return "A";
43
43
  };
44
44
 
45
- const createRenderSortKey = url => {
46
- return url;
45
+ const createRenderGSI1PartitionKey = tenant => {
46
+ return `T#${tenant}#PS#RENDER`;
47
47
  };
48
48
 
49
49
  const createRenderType = () => {
50
50
  return "ps.render";
51
51
  };
52
52
 
53
- const createTagUrlLinkPartitionKey = params => {
53
+ const createTagPathLinkPartitionKey = params => {
54
54
  const {
55
- tag
55
+ tag,
56
+ path
56
57
  } = params;
57
58
  let {
58
- namespace
59
+ tenant
59
60
  } = params;
60
61
 
61
- if (namespace.startsWith("T#")) {
62
- namespace = namespace.replace(/^T#/, "");
62
+ if (tenant.startsWith("T#")) {
63
+ tenant = tenant.replace(/^T#/, "");
63
64
  }
64
65
 
65
- return `T#${namespace}#PS#TAG#${tag.key}`;
66
+ return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;
66
67
  };
67
68
 
68
- const createTagUrlLinkSortKey = params => {
69
+ const createTagPathLinkSortKey = params => {
69
70
  const {
70
71
  tag,
71
- url
72
+ path
72
73
  } = params;
73
74
  const values = [tag.value];
74
75
 
75
- if (url) {
76
- values.push(url);
76
+ if (path) {
77
+ values.push(path);
77
78
  }
78
79
 
79
80
  return values.join("#");
80
81
  };
81
82
 
82
- const createTagUrlLinkType = () => {
83
- return "ps.tagUrlLink";
83
+ const createTagPathLinkGSI1PartitionKey = params => {
84
+ let {
85
+ tenant
86
+ } = params;
87
+
88
+ if (tenant.startsWith("T#")) {
89
+ tenant = tenant.replace(/^T#/, "");
90
+ }
91
+
92
+ return `T#${tenant}#PS#TAG`;
93
+ };
94
+
95
+ const createTagPathLinkGSI1SortKey = params => {
96
+ const {
97
+ tag,
98
+ path
99
+ } = params;
100
+ return `${tag.key}#${tag.value}#${path}`;
101
+ };
102
+
103
+ const createTagPathLinkType = () => {
104
+ return "ps.tagPathLink";
84
105
  };
85
106
 
86
107
  const getRender = async params => {
@@ -88,8 +109,8 @@ const createRenderStorageOperations = params => {
88
109
  where
89
110
  } = params;
90
111
  const keys = {
91
- PK: createRenderPartitionKey(where.namespace),
92
- SK: createRenderSortKey(where.url)
112
+ PK: createRenderPartitionKey(where.tenant, where.path),
113
+ SK: createRenderSortKey()
93
114
  };
94
115
 
95
116
  try {
@@ -97,7 +118,8 @@ const createRenderStorageOperations = params => {
97
118
  entity,
98
119
  keys
99
120
  });
100
- return (0, _cleanup.cleanupItem)(entity, result);
121
+ const dbItem = (0, _cleanup.cleanupItem)(entity, result);
122
+ return dbItem ? dbItem.data : null;
101
123
  } catch (ex) {
102
124
  throw new _error.default(ex.message || "Could not get render record by given key.", ex.code || "GET_RENDER_ERROR", {
103
125
  keys,
@@ -111,13 +133,16 @@ const createRenderStorageOperations = params => {
111
133
  render
112
134
  } = params;
113
135
  const keys = {
114
- PK: createRenderPartitionKey(render.namespace),
115
- SK: createRenderSortKey(render.url)
136
+ PK: createRenderPartitionKey(render.tenant, render.path),
137
+ SK: createRenderSortKey()
116
138
  };
117
139
 
118
140
  try {
119
- await entity.put(_objectSpread(_objectSpread(_objectSpread({}, render), keys), {}, {
120
- TYPE: createRenderType()
141
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, keys), {}, {
142
+ data: render,
143
+ TYPE: createRenderType(),
144
+ GSI1_PK: createRenderGSI1PartitionKey(render.tenant),
145
+ GSI1_SK: render.path
121
146
  }));
122
147
  return render;
123
148
  } catch (ex) {
@@ -133,8 +158,8 @@ const createRenderStorageOperations = params => {
133
158
  render
134
159
  } = params;
135
160
  const keys = {
136
- PK: createRenderPartitionKey(render.namespace),
137
- SK: createRenderSortKey(render.url)
161
+ PK: createRenderPartitionKey(render.tenant, render.path),
162
+ SK: createRenderSortKey()
138
163
  };
139
164
 
140
165
  try {
@@ -152,7 +177,7 @@ const createRenderStorageOperations = params => {
152
177
  where
153
178
  } = params;
154
179
  const {
155
- namespace,
180
+ tenant,
156
181
  tag
157
182
  } = where;
158
183
  /**
@@ -163,16 +188,16 @@ const createRenderStorageOperations = params => {
163
188
  return [];
164
189
  }
165
190
 
166
- const links = await listTagUrlLinks({
191
+ const links = await listTagPathLinks({
167
192
  where: {
168
- namespace,
193
+ tenant,
169
194
  tag
170
195
  }
171
196
  });
172
197
  const items = links.map(link => {
173
198
  return entity.getBatch({
174
- PK: createRenderPartitionKey(namespace),
175
- SK: createRenderSortKey(link.url)
199
+ PK: createRenderPartitionKey(tenant, link.path),
200
+ SK: createRenderSortKey()
176
201
  });
177
202
  });
178
203
 
@@ -181,7 +206,7 @@ const createRenderStorageOperations = params => {
181
206
  table: entity.table,
182
207
  items
183
208
  });
184
- return (0, _cleanup.cleanupItems)(entity, results);
209
+ return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
185
210
  } catch (ex) {
186
211
  throw new _error.default(ex.message || "Could not list render records after links.", ex.code || "LIST_LINKS_RENDER_ERROR", {
187
212
  links
@@ -194,7 +219,7 @@ const createRenderStorageOperations = params => {
194
219
  where
195
220
  } = params;
196
221
  const {
197
- namespace,
222
+ tenant,
198
223
  tag
199
224
  } = where;
200
225
 
@@ -204,15 +229,16 @@ const createRenderStorageOperations = params => {
204
229
 
205
230
  const queryAllParams = {
206
231
  entity,
207
- partitionKey: createRenderPartitionKey(namespace),
232
+ partitionKey: createRenderGSI1PartitionKey(tenant),
208
233
  options: {
234
+ index: "GSI1",
209
235
  gte: " "
210
236
  }
211
237
  };
212
238
 
213
239
  try {
214
240
  const results = await (0, _query.queryAll)(queryAllParams);
215
- return (0, _cleanup.cleanupItems)(entity, results);
241
+ return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
216
242
  } catch (ex) {
217
243
  throw new _error.default(ex.message || "Could not list render records.", ex.code || "LIST_RENDER_ERROR", {
218
244
  partitionKey: queryAllParams.partitionKey,
@@ -221,101 +247,114 @@ const createRenderStorageOperations = params => {
221
247
  }
222
248
  };
223
249
 
224
- const createTagUrlLinks = async params => {
250
+ const createTagPathLinks = async params => {
225
251
  const {
226
- tagUrlLinks
252
+ tagPathLinks
227
253
  } = params;
228
- const items = tagUrlLinks.map(item => {
229
- return tagUrlLinkEntity.putBatch(_objectSpread(_objectSpread({}, item), {}, {
230
- TYPE: createTagUrlLinkType(),
231
- PK: createTagUrlLinkPartitionKey({
232
- namespace: item.namespace,
233
- tag: item
254
+ const items = tagPathLinks.map(item => {
255
+ return tagPathLinkEntity.putBatch({
256
+ data: item,
257
+ TYPE: createTagPathLinkType(),
258
+ PK: createTagPathLinkPartitionKey({
259
+ tenant: item.tenant,
260
+ tag: item,
261
+ path: item.path
234
262
  }),
235
- SK: createTagUrlLinkSortKey({
263
+ SK: createTagPathLinkSortKey({
236
264
  tag: item,
237
- url: item.url
265
+ path: item.path
266
+ }),
267
+ GSI1_PK: createTagPathLinkGSI1PartitionKey({
268
+ tag: item,
269
+ tenant: item.tenant
270
+ }),
271
+ GSI1_SK: createTagPathLinkGSI1SortKey({
272
+ tag: item,
273
+ path: item.path
238
274
  })
239
- }));
275
+ });
240
276
  });
241
277
 
242
278
  try {
243
279
  await (0, _batchWrite.batchWriteAll)({
244
- table: tagUrlLinkEntity.table,
280
+ table: tagPathLinkEntity.table,
245
281
  items
246
282
  });
247
- return tagUrlLinks;
283
+ return tagPathLinks;
248
284
  } catch (ex) {
249
- throw new _error.default(ex.message || "Could not create tagUrlLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
250
- tagUrlLinks
285
+ throw new _error.default(ex.message || "Could not create tagPathLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
286
+ tagPathLinks
251
287
  });
252
288
  }
253
289
  };
254
290
 
255
- const deleteTagUrlLinks = async params => {
291
+ const deleteTagPathLinks = async params => {
256
292
  const {
257
- namespace,
293
+ tenant,
258
294
  tags,
259
- url
295
+ path
260
296
  } = params;
261
297
  const items = tags.map(tag => {
262
- return tagUrlLinkEntity.deleteBatch({
263
- PK: createTagUrlLinkPartitionKey({
298
+ return tagPathLinkEntity.deleteBatch({
299
+ PK: createTagPathLinkPartitionKey({
264
300
  tag,
265
- namespace
301
+ tenant,
302
+ path
266
303
  }),
267
- SK: createTagUrlLinkSortKey({
304
+ SK: createTagPathLinkSortKey({
268
305
  tag,
269
- url
306
+ path
270
307
  })
271
308
  });
272
309
  });
273
310
 
274
311
  try {
275
312
  await (0, _batchWrite.batchWriteAll)({
276
- table: tagUrlLinkEntity.table,
313
+ table: tagPathLinkEntity.table,
277
314
  items
278
315
  });
279
316
  } catch (ex) {
280
- throw new _error.default(ex.message || "Could not delete tagUrlLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
317
+ throw new _error.default(ex.message || "Could not delete tagPathLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
281
318
  tags,
282
- namespace,
283
- url
319
+ tenant,
320
+ path
284
321
  });
285
322
  }
286
323
  };
287
324
 
288
- const listTagUrlLinks = async params => {
325
+ const listTagPathLinks = async params => {
289
326
  const {
290
327
  where
291
328
  } = params;
292
329
  const {
293
- namespace,
330
+ tenant,
294
331
  tag
295
332
  } = where;
296
- const partitionKey = createTagUrlLinkPartitionKey({
297
- namespace,
333
+ const partitionKey = createTagPathLinkGSI1PartitionKey({
334
+ tenant,
298
335
  tag
299
336
  });
300
- const options = {};
337
+ const options = {
338
+ index: "GSI1"
339
+ };
301
340
 
302
341
  if (tag.value) {
303
- options.beginsWith = `${tag.value}#`;
342
+ options.beginsWith = `${tag.key}#${tag.value}#`;
304
343
  } else {
305
- options.gte = " ";
344
+ options.beginsWith = `${tag.key}#`;
306
345
  }
307
346
 
308
347
  const queryAllParams = {
309
- entity: tagUrlLinkEntity,
348
+ entity: tagPathLinkEntity,
310
349
  partitionKey,
311
350
  options
312
351
  };
313
352
 
314
353
  try {
315
354
  const results = await (0, _query.queryAll)(queryAllParams);
316
- return (0, _cleanup.cleanupItems)(tagUrlLinkEntity, results);
355
+ return (0, _cleanup.cleanupItems)(tagPathLinkEntity, results).map(item => item.data);
317
356
  } catch (ex) {
318
- throw new _error.default(ex.message || "Could not list tagUrlLink records.", ex.code || "LIST_TAG_URL_LINK_ERROR", {
357
+ throw new _error.default(ex.message || "Could not list tagPathLink records.", ex.code || "LIST_TAG_PATH_LINK_ERROR", {
319
358
  partitionKey,
320
359
  options
321
360
  });
@@ -327,9 +366,9 @@ const createRenderStorageOperations = params => {
327
366
  deleteRender,
328
367
  listRenders,
329
368
  getRender,
330
- createTagUrlLinks,
331
- deleteTagUrlLinks,
332
- listTagUrlLinks
369
+ createTagPathLinks,
370
+ deleteTagPathLinks,
371
+ listTagPathLinks
333
372
  };
334
373
  };
335
374
 
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRenderStorageOperations","params","entity","tagPathLinkEntity","createRenderPartitionKey","tenant","path","startsWith","replace","createRenderSortKey","createRenderGSI1PartitionKey","createRenderType","createTagPathLinkPartitionKey","tag","key","value","createTagPathLinkSortKey","values","push","join","createTagPathLinkGSI1PartitionKey","createTagPathLinkGSI1SortKey","createTagPathLinkType","getRender","where","keys","PK","SK","result","get","dbItem","cleanupItem","data","ex","WebinyError","message","code","createRender","render","put","TYPE","GSI1_PK","GSI1_SK","deleteRender","delete","listRendersByTag","links","listTagPathLinks","items","map","link","getBatch","results","batchReadAll","table","cleanupItems","item","listRenders","queryAllParams","partitionKey","options","index","gte","queryAll","createTagPathLinks","tagPathLinks","putBatch","batchWriteAll","deleteTagPathLinks","tags","deleteBatch","beginsWith"],"sources":["render.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceRenderStorageOperations,\n PrerenderingServiceStorageOperationsCreateRenderParams,\n PrerenderingServiceStorageOperationsCreateTagPathLinksParams,\n PrerenderingServiceStorageOperationsDeleteRenderParams,\n PrerenderingServiceStorageOperationsDeleteTagPathLinksParams,\n PrerenderingServiceStorageOperationsGetRenderParams,\n PrerenderingServiceStorageOperationsListRendersParams,\n PrerenderingServiceStorageOperationsListTagPathLinksParams,\n Render,\n TagPathLink\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { Tag } from \"@webiny/api-prerendering-service/types\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { queryOptions as DynamoDBToolboxQueryOptions } from \"dynamodb-toolbox/dist/classes/Table\";\nimport { DataContainer } from \"~/types\";\n\nexport interface CreateRenderStorageOperationsParams {\n entity: Entity<any>;\n tagPathLinkEntity: Entity<any>;\n}\n\nexport interface CreateTagPathLinkPartitionKeyParams {\n tenant: string;\n tag: Tag;\n path: string;\n}\n\nexport interface CreateTagPathLinkGSI1PartitionKeyParams {\n tenant: string;\n tag: Tag;\n}\n\nexport interface CreateTagPathLinkSortKeyParams {\n tag: Tag;\n path?: string;\n}\n\nexport const createRenderStorageOperations = (\n params: CreateRenderStorageOperationsParams\n): PrerenderingServiceRenderStorageOperations => {\n const { entity, tagPathLinkEntity } = params;\n\n const createRenderPartitionKey = (tenant: string, path: string): string => {\n /**\n * For backwards compatibility remove the T# if it exists.\n */\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#RENDER#${path}`;\n };\n\n const createRenderSortKey = (): string => {\n return \"A\";\n };\n\n const createRenderGSI1PartitionKey = (tenant: string): string => {\n return `T#${tenant}#PS#RENDER`;\n };\n\n const createRenderType = (): string => {\n return \"ps.render\";\n };\n\n const createTagPathLinkPartitionKey = (params: CreateTagPathLinkPartitionKeyParams): string => {\n const { tag, path } = params;\n let { tenant } = params;\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;\n };\n\n const createTagPathLinkSortKey = (params: CreateTagPathLinkSortKeyParams): string => {\n const { tag, path } = params;\n const values = [tag.value];\n if (path) {\n values.push(path);\n }\n return values.join(\"#\");\n };\n\n const createTagPathLinkGSI1PartitionKey = (\n params: CreateTagPathLinkGSI1PartitionKeyParams\n ): string => {\n let { tenant } = params;\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#TAG`;\n };\n\n const createTagPathLinkGSI1SortKey = (params: CreateTagPathLinkSortKeyParams): string => {\n const { tag, path } = params;\n\n return `${tag.key}#${tag.value}#${path}`;\n };\n\n const createTagPathLinkType = (): string => {\n return \"ps.tagPathLink\";\n };\n\n const getRender = async (\n params: PrerenderingServiceStorageOperationsGetRenderParams\n ): Promise<Render | null> => {\n const { where } = params;\n\n const keys = {\n PK: createRenderPartitionKey(where.tenant, where.path),\n SK: createRenderSortKey()\n };\n\n try {\n const result = await get<DataContainer<Render>>({\n entity,\n keys\n });\n\n const dbItem = cleanupItem(entity, result);\n\n return dbItem ? dbItem.data : null;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get render record by given key.\",\n ex.code || \"GET_RENDER_ERROR\",\n {\n keys,\n params\n }\n );\n }\n };\n const createRender = async (params: PrerenderingServiceStorageOperationsCreateRenderParams) => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.tenant, render.path),\n SK: createRenderSortKey()\n };\n\n try {\n await entity.put({\n ...keys,\n data: render,\n TYPE: createRenderType(),\n GSI1_PK: createRenderGSI1PartitionKey(render.tenant),\n GSI1_SK: render.path\n });\n\n return render;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create render record.\",\n ex.code || \"CREATE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n const deleteRender = async (\n params: PrerenderingServiceStorageOperationsDeleteRenderParams\n ): Promise<void> => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.tenant, render.path),\n SK: createRenderSortKey()\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete render record.\",\n ex.code || \"DELETE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n\n const listRendersByTag = async (\n params: PrerenderingServiceStorageOperationsListRendersParams\n ) => {\n const { where } = params;\n const { tenant, tag } = where;\n /**\n * Possibly there is no tag.key so no need to go further\n */\n if (!tag || !tag.key) {\n return [];\n }\n\n const links = await listTagPathLinks({\n where: {\n tenant,\n tag\n }\n });\n\n const items = links.map(link => {\n return entity.getBatch({\n PK: createRenderPartitionKey(tenant, link.path),\n SK: createRenderSortKey()\n });\n });\n try {\n const results = await batchReadAll<DataContainer<Render>>({\n table: entity.table,\n items\n });\n return cleanupItems(entity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records after links.\",\n ex.code || \"LIST_LINKS_RENDER_ERROR\",\n {\n links\n }\n );\n }\n };\n\n const listRenders = async (params: PrerenderingServiceStorageOperationsListRendersParams) => {\n const { where } = params;\n const { tenant, tag } = where;\n\n if (tag) {\n return listRendersByTag(params);\n }\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createRenderGSI1PartitionKey(tenant),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n\n try {\n const results = await queryAll<DataContainer<Render>>(queryAllParams);\n\n return cleanupItems(entity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records.\",\n ex.code || \"LIST_RENDER_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n };\n\n const createTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsCreateTagPathLinksParams\n ) => {\n const { tagPathLinks } = params;\n\n const items = tagPathLinks.map(item => {\n return tagPathLinkEntity.putBatch({\n data: item,\n TYPE: createTagPathLinkType(),\n PK: createTagPathLinkPartitionKey({\n tenant: item.tenant,\n tag: item,\n path: item.path\n }),\n SK: createTagPathLinkSortKey({\n tag: item,\n path: item.path\n }),\n GSI1_PK: createTagPathLinkGSI1PartitionKey({ tag: item, tenant: item.tenant }),\n GSI1_SK: createTagPathLinkGSI1SortKey({ tag: item, path: item.path })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagPathLinkEntity.table,\n items\n });\n return tagPathLinks;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create tagPathLink records.\",\n ex.code || \"CREATE_URL_TAG_LINKS_ERROR\",\n {\n tagPathLinks\n }\n );\n }\n };\n\n const deleteTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsDeleteTagPathLinksParams\n ): Promise<void> => {\n const { tenant, tags, path } = params;\n const items = tags.map(tag => {\n return tagPathLinkEntity.deleteBatch({\n PK: createTagPathLinkPartitionKey({\n tag,\n tenant,\n path\n }),\n SK: createTagPathLinkSortKey({\n tag,\n path\n })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagPathLinkEntity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete tagPathLink records.\",\n ex.code || \"DELETE_URL_TAG_LINKS_ERROR\",\n {\n tags,\n tenant,\n path\n }\n );\n }\n };\n\n const listTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsListTagPathLinksParams\n ) => {\n const { where } = params;\n const { tenant, tag } = where;\n\n const partitionKey = createTagPathLinkGSI1PartitionKey({\n tenant,\n tag\n });\n\n const options: DynamoDBToolboxQueryOptions = { index: \"GSI1\" };\n\n if (tag.value) {\n options.beginsWith = `${tag.key}#${tag.value}#`;\n } else {\n options.beginsWith = `${tag.key}#`;\n }\n\n const queryAllParams: QueryAllParams = {\n entity: tagPathLinkEntity,\n partitionKey,\n options\n };\n\n try {\n const results = await queryAll<DataContainer<TagPathLink>>(queryAllParams);\n\n return cleanupItems(tagPathLinkEntity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tagPathLink records.\",\n ex.code || \"LIST_TAG_PATH_LINK_ERROR\",\n {\n partitionKey,\n options\n }\n );\n }\n };\n\n return {\n createRender,\n deleteRender,\n listRenders,\n getRender,\n createTagPathLinks,\n deleteTagPathLinks,\n listTagPathLinks\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PrerenderingServiceSettingsStorageOperations } from "@webiny/api-prerendering-service/types";
2
+ import { Entity } from "dynamodb-toolbox";
3
+ export interface CreateSettingsStorageOperationsParams {
4
+ entity: Entity<any>;
5
+ }
6
+ export declare const createSettingsStorageOperations: (params: CreateSettingsStorageOperationsParams) => PrerenderingServiceSettingsStorageOperations;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createSettingsStorageOperations = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ var _get = require("@webiny/db-dynamodb/utils/get");
15
+
16
+ const createSettingsStorageOperations = params => {
17
+ const {
18
+ entity
19
+ } = params;
20
+
21
+ const getSettings = async (variant = "default") => {
22
+ const keys = {
23
+ PK: "PS#SETTINGS",
24
+ SK: variant
25
+ };
26
+
27
+ try {
28
+ const result = await (0, _get.get)({
29
+ entity,
30
+ keys
31
+ });
32
+
33
+ if (!result) {
34
+ throw Error();
35
+ }
36
+
37
+ return result.data;
38
+ } catch (ex) {
39
+ throw new _error.default(ex.message || "Could not load prerendering settings!", ex.code || "GET_SETTINGS_ERROR", {
40
+ keys,
41
+ params
42
+ });
43
+ }
44
+ };
45
+
46
+ const saveSettings = async params => {
47
+ const {
48
+ settings,
49
+ variant = "default"
50
+ } = params;
51
+ const keys = {
52
+ PK: "PS#SETTINGS",
53
+ SK: variant
54
+ };
55
+
56
+ try {
57
+ await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, keys), {}, {
58
+ TYPE: "ps.settings",
59
+ data: settings
60
+ }));
61
+ return settings;
62
+ } catch (ex) {
63
+ throw new _error.default(ex.message || "Could not save settings.", ex.code || "SAVE_SETTINGS_ERROR", {
64
+ keys
65
+ });
66
+ }
67
+ };
68
+
69
+ return {
70
+ getSettings,
71
+ saveSettings
72
+ };
73
+ };
74
+
75
+ exports.createSettingsStorageOperations = createSettingsStorageOperations;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSettingsStorageOperations","params","entity","getSettings","variant","keys","PK","SK","result","get","Error","data","ex","WebinyError","message","code","saveSettings","settings","put","TYPE"],"sources":["settings.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceSaveSettingsParams,\n PrerenderingServiceSettingsStorageOperations,\n PrerenderingSettings\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createSettingsStorageOperations = (\n params: CreateSettingsStorageOperationsParams\n): PrerenderingServiceSettingsStorageOperations => {\n const { entity } = params;\n\n const getSettings = async (variant = \"default\"): Promise<PrerenderingSettings> => {\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: variant\n };\n\n try {\n const result = await get<{ data: PrerenderingSettings }>({\n entity,\n keys\n });\n\n if (!result) {\n throw Error();\n }\n\n return result.data;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load prerendering settings!\",\n ex.code || \"GET_SETTINGS_ERROR\",\n {\n keys,\n params\n }\n );\n }\n };\n\n const saveSettings = async (params: PrerenderingServiceSaveSettingsParams) => {\n const { settings, variant = \"default\" } = params;\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: variant\n };\n\n try {\n await entity.put({\n ...keys,\n TYPE: \"ps.settings\",\n data: settings\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save settings.\",\n ex.code || \"SAVE_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n return {\n getSettings,\n saveSettings\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOA;;AAMO,MAAMA,+BAA+B,GACxCC,MAD2C,IAEI;EAC/C,MAAM;IAAEC;EAAF,IAAaD,MAAnB;;EAEA,MAAME,WAAW,GAAG,OAAOC,OAAO,GAAG,SAAjB,KAA8D;IAC9E,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAE,aADK;MAETC,EAAE,EAAEH;IAFK,CAAb;;IAKA,IAAI;MACA,MAAMI,MAAM,GAAG,MAAM,IAAAC,QAAA,EAAoC;QACrDP,MADqD;QAErDG;MAFqD,CAApC,CAArB;;MAKA,IAAI,CAACG,MAAL,EAAa;QACT,MAAME,KAAK,EAAX;MACH;;MAED,OAAOF,MAAM,CAACG,IAAd;IACH,CAXD,CAWE,OAAOC,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,uCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,oBAFT,EAGF;QACIV,IADJ;QAEIJ;MAFJ,CAHE,CAAN;IAQH;EACJ,CA3BD;;EA6BA,MAAMe,YAAY,GAAG,MAAOf,MAAP,IAAyD;IAC1E,MAAM;MAAEgB,QAAF;MAAYb,OAAO,GAAG;IAAtB,IAAoCH,MAA1C;IACA,MAAMI,IAAI,GAAG;MACTC,EAAE,EAAE,aADK;MAETC,EAAE,EAAEH;IAFK,CAAb;;IAKA,IAAI;MACA,MAAMF,MAAM,CAACgB,GAAP,6DACCb,IADD;QAEFc,IAAI,EAAE,aAFJ;QAGFR,IAAI,EAAEM;MAHJ,GAAN;MAMA,OAAOA,QAAP;IACH,CARD,CAQE,OAAOL,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,0BADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;QACIV;MADJ,CAHE,CAAN;IAOH;EACJ,CAxBD;;EA0BA,OAAO;IACHF,WADG;IAEHa;EAFG,CAAP;AAIH,CAhEM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-prerendering-service-so-ddb",
3
- "version": "0.0.0-mt-2",
3
+ "version": "0.0.0-unstable.1e66d121db",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,28 +17,28 @@
17
17
  "author": "Webiny Ltd",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@babel/runtime": "7.15.4",
21
- "@webiny/api-prerendering-service": "0.0.0-mt-2",
22
- "@webiny/error": "0.0.0-mt-2",
23
- "dynamodb-toolbox": "0.3.4"
20
+ "@babel/runtime": "7.19.0",
21
+ "@webiny/api-prerendering-service": "0.0.0-unstable.1e66d121db",
22
+ "@webiny/error": "0.0.0-unstable.1e66d121db",
23
+ "dynamodb-toolbox": "0.3.5"
24
24
  },
25
25
  "devDependencies": {
26
- "@babel/cli": "^7.5.5",
27
- "@babel/core": "^7.5.5",
28
- "@babel/plugin-proposal-export-default-from": "^7.5.2",
29
- "@babel/preset-env": "^7.5.5",
30
- "@babel/preset-typescript": "^7.8.3",
31
- "@webiny/cli": "^0.0.0-mt-2",
32
- "@webiny/db": "^0.0.0-mt-2",
33
- "@webiny/db-dynamodb": "^0.0.0-mt-2",
34
- "@webiny/handler-aws": "^0.0.0-mt-2",
35
- "@webiny/project-utils": "^0.0.0-mt-2",
26
+ "@babel/cli": "^7.19.3",
27
+ "@babel/core": "^7.19.3",
28
+ "@babel/plugin-proposal-export-default-from": "^7.16.0",
29
+ "@babel/preset-env": "^7.19.4",
30
+ "@babel/preset-typescript": "^7.18.6",
31
+ "@webiny/cli": "^0.0.0-unstable.1e66d121db",
32
+ "@webiny/db": "^0.0.0-unstable.1e66d121db",
33
+ "@webiny/db-dynamodb": "^0.0.0-unstable.1e66d121db",
34
+ "@webiny/handler-aws": "^0.0.0-unstable.1e66d121db",
35
+ "@webiny/project-utils": "^0.0.0-unstable.1e66d121db",
36
36
  "jest-dynalite": "^3.3.1",
37
37
  "jest-environment-node": "^27.3.0",
38
38
  "prettier": "^2.3.2",
39
39
  "rimraf": "^3.0.2",
40
40
  "ttypescript": "^1.5.12",
41
- "typescript": "^4.1.3"
41
+ "typescript": "4.7.4"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
@@ -55,5 +55,5 @@
55
55
  ]
56
56
  }
57
57
  },
58
- "gitHead": "3c0dcfb3c22c9f83107fdb97b25014cd03d9db7d"
58
+ "gitHead": "b670bf27c5039de1a2b0be764a09ba4cb94ad5e2"
59
59
  }
package/types.d.ts CHANGED
@@ -7,15 +7,16 @@ export declare type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig
7
7
  export declare type Attributes = Record<string, AttributeDefinition>;
8
8
  export declare enum ENTITIES {
9
9
  RENDER = "PrerenderingServiceRender",
10
+ SETTINGS = "PrerenderingServiceSettings",
10
11
  QUEUE_JOB = "PrerenderingServiceQueueJob",
11
- TAG_URL_LINK = "PrerenderingServiceTagUrlLink"
12
+ TAG_PATH_LINK = "PrerenderingServiceTagPathLink"
12
13
  }
13
14
  export interface PrerenderingServiceFactoryParams {
14
15
  documentClient: DocumentClient;
15
16
  table?: TableModifier;
16
17
  attributes?: Record<ENTITIES, Attributes>;
17
18
  }
18
- export declare type Entities = "render" | "queueJob" | "tagUrlLink";
19
+ export declare type Entities = "render" | "queueJob" | "tagPathLink";
19
20
  export interface PrerenderingServiceStorageOperations extends BasePrerenderingServiceStorageOperations {
20
21
  getTable(): Table;
21
22
  getEntities(): Record<Entities, Entity<any>>;
@@ -26,3 +27,8 @@ export interface PrerenderingServiceFactory {
26
27
  export interface TableModifier {
27
28
  (table: TableConstructor): TableConstructor;
28
29
  }
30
+ export interface DataContainer<T> {
31
+ PK: string;
32
+ SK: string;
33
+ data: T;
34
+ }
package/types.js CHANGED
@@ -9,6 +9,7 @@ exports.ENTITIES = ENTITIES;
9
9
 
10
10
  (function (ENTITIES) {
11
11
  ENTITIES["RENDER"] = "PrerenderingServiceRender";
12
+ ENTITIES["SETTINGS"] = "PrerenderingServiceSettings";
12
13
  ENTITIES["QUEUE_JOB"] = "PrerenderingServiceQueueJob";
13
- ENTITIES["TAG_URL_LINK"] = "PrerenderingServiceTagUrlLink";
14
+ ENTITIES["TAG_PATH_LINK"] = "PrerenderingServiceTagPathLink";
14
15
  })(ENTITIES || (exports.ENTITIES = ENTITIES = {}));
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ENTITIES"],"sources":["types.ts"],"sourcesContent":["import { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table, Entity } from \"dynamodb-toolbox\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\nimport { PrerenderingServiceStorageOperations as BasePrerenderingServiceStorageOperations } from \"@webiny/api-prerendering-service/types\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n RENDER = \"PrerenderingServiceRender\",\n SETTINGS = \"PrerenderingServiceSettings\",\n QUEUE_JOB = \"PrerenderingServiceQueueJob\",\n TAG_PATH_LINK = \"PrerenderingServiceTagPathLink\"\n}\n\nexport interface PrerenderingServiceFactoryParams {\n documentClient: DocumentClient;\n table?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n}\n\nexport type Entities = \"render\" | \"queueJob\" | \"tagPathLink\";\n\nexport interface PrerenderingServiceStorageOperations\n extends BasePrerenderingServiceStorageOperations {\n getTable(): Table;\n getEntities(): Record<Entities, Entity<any>>;\n}\n\nexport interface PrerenderingServiceFactory {\n (params: PrerenderingServiceFactoryParams): PrerenderingServiceStorageOperations;\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n\nexport interface DataContainer<T> {\n PK: string;\n SK: string;\n data: T;\n}\n"],"mappings":";;;;;;IAaYA,Q;;;WAAAA,Q;EAAAA,Q;EAAAA,Q;EAAAA,Q;EAAAA,Q;GAAAA,Q,wBAAAA,Q"}