@webiny/api-prerendering-service-so-ddb 0.0.0-unstable.fcdad0bc61 → 0.0.0-unstable.fdd9228b5d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/queueJob.d.ts +4 -3
- package/definitions/queueJob.js +8 -12
- package/definitions/queueJob.js.map +1 -1
- package/definitions/render.d.ts +4 -3
- package/definitions/render.js +8 -12
- package/definitions/render.js.map +1 -1
- package/definitions/renderLegacy.d.ts +4 -3
- package/definitions/renderLegacy.js +8 -12
- package/definitions/renderLegacy.js.map +1 -1
- package/definitions/settings.d.ts +4 -3
- package/definitions/settings.js +8 -12
- package/definitions/settings.js.map +1 -1
- package/definitions/table.d.ts +5 -5
- package/definitions/table.js +7 -6
- package/definitions/table.js.map +1 -1
- package/definitions/tagPathLink.d.ts +51 -4
- package/definitions/tagPathLink.js +8 -12
- package/definitions/tagPathLink.js.map +1 -1
- package/definitions/tagPathLinkLegacy.d.ts +57 -4
- package/definitions/tagPathLinkLegacy.js +8 -12
- package/definitions/tagPathLinkLegacy.js.map +1 -1
- package/definitions/tenantEntity.d.ts +8 -0
- package/definitions/tenantEntity.js +39 -0
- package/definitions/tenantEntity.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +24 -30
- package/index.js.map +1 -1
- package/operations/queueJob.d.ts +2 -2
- package/operations/queueJob.js +21 -35
- package/operations/queueJob.js.map +1 -1
- package/operations/render.d.ts +4 -5
- package/operations/render.js +67 -112
- package/operations/render.js.map +1 -1
- package/operations/settings.d.ts +2 -2
- package/operations/settings.js +12 -19
- package/operations/settings.js.map +1 -1
- package/operations/tenant.d.ts +6 -0
- package/operations/tenant.js +29 -0
- package/operations/tenant.js.map +1 -0
- package/package.json +16 -31
- package/types.d.ts +12 -12
- package/types.js +6 -5
- package/types.js.map +1 -1
package/operations/render.js
CHANGED
|
@@ -1,32 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createRenderStorageOperations = void 0;
|
|
9
|
-
|
|
10
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
|
-
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
15
|
-
|
|
16
|
-
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
17
|
-
|
|
18
|
-
var _batchRead = require("@webiny/db-dynamodb/utils/batchRead");
|
|
19
|
-
|
|
20
|
-
var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
|
|
21
|
-
|
|
22
|
-
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
23
|
-
|
|
9
|
+
var _dbDynamodb = require("@webiny/db-dynamodb");
|
|
24
10
|
const createRenderStorageOperations = params => {
|
|
25
11
|
const {
|
|
26
12
|
entity,
|
|
27
13
|
tagPathLinkEntity
|
|
28
14
|
} = params;
|
|
29
|
-
|
|
30
15
|
const createRenderPartitionKey = (tenant, path) => {
|
|
31
16
|
/**
|
|
32
17
|
* For backwards compatibility remove the T# if it exists.
|
|
@@ -34,22 +19,17 @@ const createRenderStorageOperations = params => {
|
|
|
34
19
|
if (tenant.startsWith("T#")) {
|
|
35
20
|
tenant = tenant.replace(/^T#/, "");
|
|
36
21
|
}
|
|
37
|
-
|
|
38
22
|
return `T#${tenant}#PS#RENDER#${path}`;
|
|
39
23
|
};
|
|
40
|
-
|
|
41
24
|
const createRenderSortKey = () => {
|
|
42
25
|
return "A";
|
|
43
26
|
};
|
|
44
|
-
|
|
45
27
|
const createRenderGSI1PartitionKey = tenant => {
|
|
46
28
|
return `T#${tenant}#PS#RENDER`;
|
|
47
29
|
};
|
|
48
|
-
|
|
49
30
|
const createRenderType = () => {
|
|
50
31
|
return "ps.render";
|
|
51
32
|
};
|
|
52
|
-
|
|
53
33
|
const createTagPathLinkPartitionKey = params => {
|
|
54
34
|
const {
|
|
55
35
|
tag,
|
|
@@ -58,40 +38,31 @@ const createRenderStorageOperations = params => {
|
|
|
58
38
|
let {
|
|
59
39
|
tenant
|
|
60
40
|
} = params;
|
|
61
|
-
|
|
62
41
|
if (tenant.startsWith("T#")) {
|
|
63
42
|
tenant = tenant.replace(/^T#/, "");
|
|
64
43
|
}
|
|
65
|
-
|
|
66
44
|
return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;
|
|
67
45
|
};
|
|
68
|
-
|
|
69
46
|
const createTagPathLinkSortKey = params => {
|
|
70
47
|
const {
|
|
71
48
|
tag,
|
|
72
49
|
path
|
|
73
50
|
} = params;
|
|
74
51
|
const values = [tag.value];
|
|
75
|
-
|
|
76
52
|
if (path) {
|
|
77
53
|
values.push(path);
|
|
78
54
|
}
|
|
79
|
-
|
|
80
55
|
return values.join("#");
|
|
81
56
|
};
|
|
82
|
-
|
|
83
57
|
const createTagPathLinkGSI1PartitionKey = params => {
|
|
84
58
|
let {
|
|
85
59
|
tenant
|
|
86
60
|
} = params;
|
|
87
|
-
|
|
88
61
|
if (tenant.startsWith("T#")) {
|
|
89
62
|
tenant = tenant.replace(/^T#/, "");
|
|
90
63
|
}
|
|
91
|
-
|
|
92
64
|
return `T#${tenant}#PS#TAG`;
|
|
93
65
|
};
|
|
94
|
-
|
|
95
66
|
const createTagPathLinkGSI1SortKey = params => {
|
|
96
67
|
const {
|
|
97
68
|
tag,
|
|
@@ -99,11 +70,9 @@ const createRenderStorageOperations = params => {
|
|
|
99
70
|
} = params;
|
|
100
71
|
return `${tag.key}#${tag.value}#${path}`;
|
|
101
72
|
};
|
|
102
|
-
|
|
103
73
|
const createTagPathLinkType = () => {
|
|
104
74
|
return "ps.tagPathLink";
|
|
105
75
|
};
|
|
106
|
-
|
|
107
76
|
const getRender = async params => {
|
|
108
77
|
const {
|
|
109
78
|
where
|
|
@@ -112,13 +81,12 @@ const createRenderStorageOperations = params => {
|
|
|
112
81
|
PK: createRenderPartitionKey(where.tenant, where.path),
|
|
113
82
|
SK: createRenderSortKey()
|
|
114
83
|
};
|
|
115
|
-
|
|
116
84
|
try {
|
|
117
|
-
const result = await (0,
|
|
85
|
+
const result = await (0, _dbDynamodb.get)({
|
|
118
86
|
entity,
|
|
119
87
|
keys
|
|
120
88
|
});
|
|
121
|
-
const dbItem = (0,
|
|
89
|
+
const dbItem = (0, _dbDynamodb.cleanupItem)(entity, result);
|
|
122
90
|
return dbItem ? dbItem.data : null;
|
|
123
91
|
} catch (ex) {
|
|
124
92
|
throw new _error.default(ex.message || "Could not get render record by given key.", ex.code || "GET_RENDER_ERROR", {
|
|
@@ -127,7 +95,6 @@ const createRenderStorageOperations = params => {
|
|
|
127
95
|
});
|
|
128
96
|
}
|
|
129
97
|
};
|
|
130
|
-
|
|
131
98
|
const createRender = async params => {
|
|
132
99
|
const {
|
|
133
100
|
render
|
|
@@ -136,14 +103,17 @@ const createRenderStorageOperations = params => {
|
|
|
136
103
|
PK: createRenderPartitionKey(render.tenant, render.path),
|
|
137
104
|
SK: createRenderSortKey()
|
|
138
105
|
};
|
|
139
|
-
|
|
140
106
|
try {
|
|
141
|
-
await
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
107
|
+
await (0, _dbDynamodb.put)({
|
|
108
|
+
entity,
|
|
109
|
+
item: {
|
|
110
|
+
...keys,
|
|
111
|
+
data: render,
|
|
112
|
+
TYPE: createRenderType(),
|
|
113
|
+
GSI1_PK: createRenderGSI1PartitionKey(render.tenant),
|
|
114
|
+
GSI1_SK: render.path
|
|
115
|
+
}
|
|
116
|
+
});
|
|
147
117
|
return render;
|
|
148
118
|
} catch (ex) {
|
|
149
119
|
throw new _error.default(ex.message || "Could not create render record.", ex.code || "CREATE_RENDER_ERROR", {
|
|
@@ -152,7 +122,6 @@ const createRenderStorageOperations = params => {
|
|
|
152
122
|
});
|
|
153
123
|
}
|
|
154
124
|
};
|
|
155
|
-
|
|
156
125
|
const deleteRender = async params => {
|
|
157
126
|
const {
|
|
158
127
|
render
|
|
@@ -161,9 +130,11 @@ const createRenderStorageOperations = params => {
|
|
|
161
130
|
PK: createRenderPartitionKey(render.tenant, render.path),
|
|
162
131
|
SK: createRenderSortKey()
|
|
163
132
|
};
|
|
164
|
-
|
|
165
133
|
try {
|
|
166
|
-
await
|
|
134
|
+
await (0, _dbDynamodb.deleteItem)({
|
|
135
|
+
entity,
|
|
136
|
+
keys
|
|
137
|
+
});
|
|
167
138
|
} catch (ex) {
|
|
168
139
|
throw new _error.default(ex.message || "Could not delete render record.", ex.code || "DELETE_RENDER_ERROR", {
|
|
169
140
|
keys,
|
|
@@ -171,7 +142,6 @@ const createRenderStorageOperations = params => {
|
|
|
171
142
|
});
|
|
172
143
|
}
|
|
173
144
|
};
|
|
174
|
-
|
|
175
145
|
const listRendersByTag = async params => {
|
|
176
146
|
const {
|
|
177
147
|
where
|
|
@@ -183,11 +153,9 @@ const createRenderStorageOperations = params => {
|
|
|
183
153
|
/**
|
|
184
154
|
* Possibly there is no tag.key so no need to go further
|
|
185
155
|
*/
|
|
186
|
-
|
|
187
156
|
if (!tag || !tag.key) {
|
|
188
157
|
return [];
|
|
189
158
|
}
|
|
190
|
-
|
|
191
159
|
const links = await listTagPathLinks({
|
|
192
160
|
where: {
|
|
193
161
|
tenant,
|
|
@@ -200,20 +168,18 @@ const createRenderStorageOperations = params => {
|
|
|
200
168
|
SK: createRenderSortKey()
|
|
201
169
|
});
|
|
202
170
|
});
|
|
203
|
-
|
|
204
171
|
try {
|
|
205
|
-
const results = await (0,
|
|
172
|
+
const results = await (0, _dbDynamodb.batchReadAll)({
|
|
206
173
|
table: entity.table,
|
|
207
174
|
items
|
|
208
175
|
});
|
|
209
|
-
return (0,
|
|
176
|
+
return (0, _dbDynamodb.cleanupItems)(entity, results).map(item => item.data);
|
|
210
177
|
} catch (ex) {
|
|
211
178
|
throw new _error.default(ex.message || "Could not list render records after links.", ex.code || "LIST_LINKS_RENDER_ERROR", {
|
|
212
179
|
links
|
|
213
180
|
});
|
|
214
181
|
}
|
|
215
182
|
};
|
|
216
|
-
|
|
217
183
|
const listRenders = async params => {
|
|
218
184
|
const {
|
|
219
185
|
where
|
|
@@ -222,11 +188,9 @@ const createRenderStorageOperations = params => {
|
|
|
222
188
|
tenant,
|
|
223
189
|
tag
|
|
224
190
|
} = where;
|
|
225
|
-
|
|
226
191
|
if (tag) {
|
|
227
192
|
return listRendersByTag(params);
|
|
228
193
|
}
|
|
229
|
-
|
|
230
194
|
const queryAllParams = {
|
|
231
195
|
entity,
|
|
232
196
|
partitionKey: createRenderGSI1PartitionKey(tenant),
|
|
@@ -235,10 +199,9 @@ const createRenderStorageOperations = params => {
|
|
|
235
199
|
gte: " "
|
|
236
200
|
}
|
|
237
201
|
};
|
|
238
|
-
|
|
239
202
|
try {
|
|
240
|
-
const results = await (0,
|
|
241
|
-
return
|
|
203
|
+
const results = await (0, _dbDynamodb.queryAllClean)(queryAllParams);
|
|
204
|
+
return results.map(item => item.data);
|
|
242
205
|
} catch (ex) {
|
|
243
206
|
throw new _error.default(ex.message || "Could not list render records.", ex.code || "LIST_RENDER_ERROR", {
|
|
244
207
|
partitionKey: queryAllParams.partitionKey,
|
|
@@ -246,40 +209,38 @@ const createRenderStorageOperations = params => {
|
|
|
246
209
|
});
|
|
247
210
|
}
|
|
248
211
|
};
|
|
249
|
-
|
|
250
212
|
const createTagPathLinks = async params => {
|
|
251
213
|
const {
|
|
252
214
|
tagPathLinks
|
|
253
215
|
} = params;
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
216
|
+
const tagPathLinksBatch = (0, _dbDynamodb.createEntityWriteBatch)({
|
|
217
|
+
entity: tagPathLinkEntity,
|
|
218
|
+
put: tagPathLinks.map(item => {
|
|
219
|
+
return {
|
|
220
|
+
data: item,
|
|
221
|
+
TYPE: createTagPathLinkType(),
|
|
222
|
+
PK: createTagPathLinkPartitionKey({
|
|
223
|
+
tenant: item.tenant,
|
|
224
|
+
tag: item,
|
|
225
|
+
path: item.path
|
|
226
|
+
}),
|
|
227
|
+
SK: createTagPathLinkSortKey({
|
|
228
|
+
tag: item,
|
|
229
|
+
path: item.path
|
|
230
|
+
}),
|
|
231
|
+
GSI1_PK: createTagPathLinkGSI1PartitionKey({
|
|
232
|
+
tag: item,
|
|
233
|
+
tenant: item.tenant
|
|
234
|
+
}),
|
|
235
|
+
GSI1_SK: createTagPathLinkGSI1SortKey({
|
|
236
|
+
tag: item,
|
|
237
|
+
path: item.path
|
|
238
|
+
})
|
|
239
|
+
};
|
|
240
|
+
})
|
|
276
241
|
});
|
|
277
|
-
|
|
278
242
|
try {
|
|
279
|
-
await (
|
|
280
|
-
table: tagPathLinkEntity.table,
|
|
281
|
-
items
|
|
282
|
-
});
|
|
243
|
+
await tagPathLinksBatch.execute();
|
|
283
244
|
return tagPathLinks;
|
|
284
245
|
} catch (ex) {
|
|
285
246
|
throw new _error.default(ex.message || "Could not create tagPathLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
|
|
@@ -287,32 +248,30 @@ const createRenderStorageOperations = params => {
|
|
|
287
248
|
});
|
|
288
249
|
}
|
|
289
250
|
};
|
|
290
|
-
|
|
291
251
|
const deleteTagPathLinks = async params => {
|
|
292
252
|
const {
|
|
293
253
|
tenant,
|
|
294
254
|
tags,
|
|
295
255
|
path
|
|
296
256
|
} = params;
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
257
|
+
const tagPathLinksBatch = (0, _dbDynamodb.createEntityWriteBatch)({
|
|
258
|
+
entity: tagPathLinkEntity,
|
|
259
|
+
delete: tags.map(tag => {
|
|
260
|
+
return {
|
|
261
|
+
PK: createTagPathLinkPartitionKey({
|
|
262
|
+
tag,
|
|
263
|
+
tenant,
|
|
264
|
+
path
|
|
265
|
+
}),
|
|
266
|
+
SK: createTagPathLinkSortKey({
|
|
267
|
+
tag,
|
|
268
|
+
path
|
|
269
|
+
})
|
|
270
|
+
};
|
|
271
|
+
})
|
|
309
272
|
});
|
|
310
|
-
|
|
311
273
|
try {
|
|
312
|
-
await (
|
|
313
|
-
table: tagPathLinkEntity.table,
|
|
314
|
-
items
|
|
315
|
-
});
|
|
274
|
+
await tagPathLinksBatch.execute();
|
|
316
275
|
} catch (ex) {
|
|
317
276
|
throw new _error.default(ex.message || "Could not delete tagPathLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
|
|
318
277
|
tags,
|
|
@@ -321,7 +280,6 @@ const createRenderStorageOperations = params => {
|
|
|
321
280
|
});
|
|
322
281
|
}
|
|
323
282
|
};
|
|
324
|
-
|
|
325
283
|
const listTagPathLinks = async params => {
|
|
326
284
|
const {
|
|
327
285
|
where
|
|
@@ -337,22 +295,19 @@ const createRenderStorageOperations = params => {
|
|
|
337
295
|
const options = {
|
|
338
296
|
index: "GSI1"
|
|
339
297
|
};
|
|
340
|
-
|
|
341
298
|
if (tag.value) {
|
|
342
299
|
options.beginsWith = `${tag.key}#${tag.value}#`;
|
|
343
300
|
} else {
|
|
344
301
|
options.beginsWith = `${tag.key}#`;
|
|
345
302
|
}
|
|
346
|
-
|
|
347
303
|
const queryAllParams = {
|
|
348
304
|
entity: tagPathLinkEntity,
|
|
349
305
|
partitionKey,
|
|
350
306
|
options
|
|
351
307
|
};
|
|
352
|
-
|
|
353
308
|
try {
|
|
354
|
-
const results = await (0,
|
|
355
|
-
return (0,
|
|
309
|
+
const results = await (0, _dbDynamodb.queryAll)(queryAllParams);
|
|
310
|
+
return (0, _dbDynamodb.cleanupItems)(tagPathLinkEntity, results).map(item => item.data);
|
|
356
311
|
} catch (ex) {
|
|
357
312
|
throw new _error.default(ex.message || "Could not list tagPathLink records.", ex.code || "LIST_TAG_PATH_LINK_ERROR", {
|
|
358
313
|
partitionKey,
|
|
@@ -360,7 +315,6 @@ const createRenderStorageOperations = params => {
|
|
|
360
315
|
});
|
|
361
316
|
}
|
|
362
317
|
};
|
|
363
|
-
|
|
364
318
|
return {
|
|
365
319
|
createRender,
|
|
366
320
|
deleteRender,
|
|
@@ -371,5 +325,6 @@ const createRenderStorageOperations = params => {
|
|
|
371
325
|
listTagPathLinks
|
|
372
326
|
};
|
|
373
327
|
};
|
|
328
|
+
exports.createRenderStorageOperations = createRenderStorageOperations;
|
|
374
329
|
|
|
375
|
-
|
|
330
|
+
//# sourceMappingURL=render.js.map
|
package/operations/render.js.map
CHANGED
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_dbDynamodb","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","item","TYPE","GSI1_PK","GSI1_SK","deleteRender","deleteItem","listRendersByTag","links","listTagPathLinks","items","map","link","getBatch","results","batchReadAll","table","cleanupItems","listRenders","queryAllParams","partitionKey","options","index","gte","queryAllClean","createTagPathLinks","tagPathLinks","tagPathLinksBatch","createEntityWriteBatch","execute","deleteTagPathLinks","tags","delete","beginsWith","queryAll","exports"],"sources":["render.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n PrerenderingServiceRenderStorageOperations,\n PrerenderingServiceStorageOperationsCreateRenderParams,\n PrerenderingServiceStorageOperationsCreateTagPathLinksParams,\n PrerenderingServiceStorageOperationsDeleteRenderParams,\n PrerenderingServiceStorageOperationsDeleteTagPathLinksParams,\n PrerenderingServiceStorageOperationsGetRenderParams,\n PrerenderingServiceStorageOperationsListRendersParams,\n PrerenderingServiceStorageOperationsListTagPathLinksParams,\n Render,\n Tag,\n TagPathLink\n} from \"@webiny/api-prerendering-service/types\";\nimport type { Entity, EntityQueryOptions } from \"@webiny/db-dynamodb/toolbox\";\nimport {\n batchReadAll,\n cleanupItem,\n cleanupItems,\n createEntityWriteBatch,\n deleteItem,\n get,\n put,\n queryAll,\n queryAllClean\n} from \"@webiny/db-dynamodb\";\nimport type { QueryAllParams } from \"@webiny/db-dynamodb\";\nimport type { DataContainer } from \"~/types\";\n\nexport interface CreateRenderStorageOperationsParams {\n entity: Entity;\n tagPathLinkEntity: Entity;\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 put({\n entity,\n item: {\n ...keys,\n data: render,\n TYPE: createRenderType(),\n GSI1_PK: createRenderGSI1PartitionKey(render.tenant),\n GSI1_SK: render.path\n }\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 deleteItem({\n entity,\n keys\n });\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 queryAllClean<DataContainer<Render>>(queryAllParams);\n\n return 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 tagPathLinksBatch = createEntityWriteBatch({\n entity: tagPathLinkEntity,\n put: tagPathLinks.map(item => {\n return {\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\n try {\n await tagPathLinksBatch.execute();\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\n const tagPathLinksBatch = createEntityWriteBatch({\n entity: tagPathLinkEntity,\n delete: tags.map(tag => {\n return {\n PK: createTagPathLinkPartitionKey({\n tag,\n tenant,\n path\n }),\n SK: createTagPathLinkSortKey({\n tag,\n path\n })\n };\n })\n });\n\n try {\n await tagPathLinksBatch.execute();\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: EntityQueryOptions = {\n index: \"GSI1\"\n };\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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","ignoreList":[]}
|
package/operations/settings.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PrerenderingServiceSettingsStorageOperations } from "@webiny/api-prerendering-service/types";
|
|
2
|
-
import { Entity } from "dynamodb
|
|
1
|
+
import type { PrerenderingServiceSettingsStorageOperations } from "@webiny/api-prerendering-service/types";
|
|
2
|
+
import type { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
3
3
|
export interface CreateSettingsStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
package/operations/settings.js
CHANGED
|
@@ -1,48 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createSettingsStorageOperations = void 0;
|
|
9
|
-
|
|
10
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
-
|
|
12
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
9
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
15
|
-
|
|
10
|
+
var _dbDynamodb = require("@webiny/db-dynamodb");
|
|
16
11
|
const createSettingsStorageOperations = params => {
|
|
17
12
|
const {
|
|
18
13
|
entity
|
|
19
14
|
} = params;
|
|
20
|
-
|
|
21
15
|
const getSettings = async (variant = "default") => {
|
|
22
16
|
const keys = {
|
|
23
17
|
PK: "PS#SETTINGS",
|
|
24
18
|
SK: variant
|
|
25
19
|
};
|
|
26
|
-
|
|
27
20
|
try {
|
|
28
21
|
const result = await (0, _get.get)({
|
|
29
22
|
entity,
|
|
30
23
|
keys
|
|
31
24
|
});
|
|
32
|
-
|
|
33
25
|
if (!result) {
|
|
34
26
|
throw Error();
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
return result.data;
|
|
38
29
|
} catch (ex) {
|
|
39
30
|
throw new _error.default(ex.message || "Could not load prerendering settings!", ex.code || "GET_SETTINGS_ERROR", {
|
|
40
31
|
keys,
|
|
41
|
-
|
|
32
|
+
entity: entity.name
|
|
42
33
|
});
|
|
43
34
|
}
|
|
44
35
|
};
|
|
45
|
-
|
|
46
36
|
const saveSettings = async params => {
|
|
47
37
|
const {
|
|
48
38
|
settings,
|
|
@@ -52,12 +42,15 @@ const createSettingsStorageOperations = params => {
|
|
|
52
42
|
PK: "PS#SETTINGS",
|
|
53
43
|
SK: variant
|
|
54
44
|
};
|
|
55
|
-
|
|
56
45
|
try {
|
|
57
|
-
await
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
46
|
+
await (0, _dbDynamodb.put)({
|
|
47
|
+
entity,
|
|
48
|
+
item: {
|
|
49
|
+
...keys,
|
|
50
|
+
TYPE: "ps.settings",
|
|
51
|
+
data: settings
|
|
52
|
+
}
|
|
53
|
+
});
|
|
61
54
|
return settings;
|
|
62
55
|
} catch (ex) {
|
|
63
56
|
throw new _error.default(ex.message || "Could not save settings.", ex.code || "SAVE_SETTINGS_ERROR", {
|
|
@@ -65,11 +58,11 @@ const createSettingsStorageOperations = params => {
|
|
|
65
58
|
});
|
|
66
59
|
}
|
|
67
60
|
};
|
|
68
|
-
|
|
69
61
|
return {
|
|
70
62
|
getSettings,
|
|
71
63
|
saveSettings
|
|
72
64
|
};
|
|
73
65
|
};
|
|
66
|
+
exports.createSettingsStorageOperations = createSettingsStorageOperations;
|
|
74
67
|
|
|
75
|
-
|
|
68
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -1 +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
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_get","_dbDynamodb","createSettingsStorageOperations","params","entity","getSettings","variant","keys","PK","SK","result","get","Error","data","ex","WebinyError","message","code","name","saveSettings","settings","put","item","TYPE","exports"],"sources":["settings.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n PrerenderingServiceSaveSettingsParams,\n PrerenderingServiceSettingsStorageOperations,\n PrerenderingSettings\n} from \"@webiny/api-prerendering-service/types\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\nimport { put } from \"@webiny/db-dynamodb\";\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 entity: entity.name\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 put({\n entity,\n item: {\n ...keys,\n TYPE: \"ps.settings\",\n data: settings\n }\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,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAOA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAMO,MAAMG,+BAA+B,GACxCC,MAA6C,IACE;EAC/C,MAAM;IAAEC;EAAO,CAAC,GAAGD,MAAM;EAEzB,MAAME,WAAW,GAAG,MAAAA,CAAOC,OAAO,GAAG,SAAS,KAAoC;IAC9E,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAEH;IACR,CAAC;IAED,IAAI;MACA,MAAMI,MAAM,GAAG,MAAM,IAAAC,QAAG,EAAiC;QACrDP,MAAM;QACNG;MACJ,CAAC,CAAC;MAEF,IAAI,CAACG,MAAM,EAAE;QACT,MAAME,KAAK,CAAC,CAAC;MACjB;MAEA,OAAOF,MAAM,CAACG,IAAI;IACtB,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,uCAAuC,EACrDF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIV,IAAI;QACJH,MAAM,EAAEA,MAAM,CAACc;MACnB,CACJ,CAAC;IACL;EACJ,CAAC;EAED,MAAMC,YAAY,GAAG,MAAOhB,MAA6C,IAAK;IAC1E,MAAM;MAAEiB,QAAQ;MAAEd,OAAO,GAAG;IAAU,CAAC,GAAGH,MAAM;IAChD,MAAMI,IAAI,GAAG;MACTC,EAAE,EAAE,aAAa;MACjBC,EAAE,EAAEH;IACR,CAAC;IAED,IAAI;MACA,MAAM,IAAAe,eAAG,EAAC;QACNjB,MAAM;QACNkB,IAAI,EAAE;UACF,GAAGf,IAAI;UACPgB,IAAI,EAAE,aAAa;UACnBV,IAAI,EAAEO;QACV;MACJ,CAAC,CAAC;MAEF,OAAOA,QAAQ;IACnB,CAAC,CAAC,OAAON,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,0BAA0B,EACxCF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIV;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,OAAO;IACHF,WAAW;IACXc;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAtB,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PrerenderingServiceTenantStorageOperations } from "@webiny/api-prerendering-service/types";
|
|
2
|
+
import type { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
3
|
+
export interface CreateTenantStorageOperationsParams {
|
|
4
|
+
entity: Entity<any>;
|
|
5
|
+
}
|
|
6
|
+
export declare const createTenantStorageOperations: (params: CreateTenantStorageOperationsParams) => PrerenderingServiceTenantStorageOperations;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createTenantStorageOperations = void 0;
|
|
7
|
+
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
8
|
+
const createTenantStorageOperations = params => {
|
|
9
|
+
const {
|
|
10
|
+
entity
|
|
11
|
+
} = params;
|
|
12
|
+
const getTenantIds = async () => {
|
|
13
|
+
const tenants = await (0, _query.queryAll)({
|
|
14
|
+
entity,
|
|
15
|
+
partitionKey: "TENANTS",
|
|
16
|
+
options: {
|
|
17
|
+
index: "GSI1",
|
|
18
|
+
gt: " "
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return tenants.map(tenant => tenant.data.id);
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
getTenantIds
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
exports.createTenantStorageOperations = createTenantStorageOperations;
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=tenant.js.map
|