@webiny/api-form-builder-so-ddb 0.0.0-mt-3 → 0.0.0-unstable.085ff6572f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/form.d.ts +2 -1
- package/definitions/form.js +3 -12
- package/definitions/form.js.map +1 -0
- package/definitions/settings.d.ts +2 -1
- package/definitions/settings.js +3 -12
- package/definitions/settings.js.map +1 -0
- package/definitions/submission.d.ts +2 -1
- package/definitions/submission.js +3 -12
- package/definitions/submission.js.map +1 -0
- package/definitions/system.d.ts +2 -1
- package/definitions/system.js +3 -12
- package/definitions/system.js.map +1 -0
- package/definitions/table.d.ts +3 -2
- package/definitions/table.js +0 -3
- package/definitions/table.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +35 -43
- package/index.js.map +1 -0
- package/operations/form/fields.js +0 -3
- package/operations/form/fields.js.map +1 -0
- package/operations/form/index.d.ts +2 -2
- package/operations/form/index.js +25 -115
- package/operations/form/index.js.map +1 -0
- package/operations/settings/index.d.ts +2 -2
- package/operations/settings/index.js +5 -28
- package/operations/settings/index.js.map +1 -0
- package/operations/submission/fields.js +0 -3
- package/operations/submission/fields.js.map +1 -0
- package/operations/submission/index.d.ts +2 -2
- package/operations/submission/index.js +7 -45
- package/operations/submission/index.js.map +1 -0
- package/operations/system/index.d.ts +2 -2
- package/operations/system/index.js +4 -25
- package/operations/system/index.js.map +1 -0
- package/package.json +23 -23
- package/plugins/FormDynamoDbFieldPlugin.js +1 -6
- package/plugins/FormDynamoDbFieldPlugin.js.map +1 -0
- package/plugins/FormSubmissionDynamoDbFieldPlugin.js +1 -6
- package/plugins/FormSubmissionDynamoDbFieldPlugin.js.map +1 -0
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +27 -0
- package/plugins/index.js.map +1 -0
- package/types.js +0 -1
- package/types.js.map +1 -0
package/operations/form/index.js
CHANGED
|
@@ -1,38 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.createFormStorageOperations = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
15
|
-
|
|
16
11
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
17
|
-
|
|
18
12
|
var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
|
|
19
|
-
|
|
20
13
|
var _filter = require("@webiny/db-dynamodb/utils/filter");
|
|
21
|
-
|
|
22
14
|
var _sort = require("@webiny/db-dynamodb/utils/sort");
|
|
23
|
-
|
|
24
15
|
var _utils = require("@webiny/utils");
|
|
25
|
-
|
|
26
16
|
var _FormDynamoDbFieldPlugin = require("../../plugins/FormDynamoDbFieldPlugin");
|
|
27
|
-
|
|
28
17
|
var _cursor = require("@webiny/db-dynamodb/utils/cursor");
|
|
29
|
-
|
|
30
18
|
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
31
|
-
|
|
32
|
-
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; }
|
|
33
|
-
|
|
34
|
-
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; }
|
|
35
|
-
|
|
36
19
|
const createFormStorageOperations = params => {
|
|
37
20
|
const {
|
|
38
21
|
entity,
|
|
@@ -40,7 +23,6 @@ const createFormStorageOperations = params => {
|
|
|
40
23
|
plugins
|
|
41
24
|
} = params;
|
|
42
25
|
const formDynamoDbFields = plugins.byType(_FormDynamoDbFieldPlugin.FormDynamoDbFieldPlugin.type);
|
|
43
|
-
|
|
44
26
|
const createFormPartitionKey = params => {
|
|
45
27
|
const {
|
|
46
28
|
tenant,
|
|
@@ -48,15 +30,12 @@ const createFormStorageOperations = params => {
|
|
|
48
30
|
} = params;
|
|
49
31
|
return `T#${tenant}#L#${locale}#FB#F`;
|
|
50
32
|
};
|
|
51
|
-
|
|
52
33
|
const createFormLatestPartitionKey = params => {
|
|
53
34
|
return `${createFormPartitionKey(params)}#L`;
|
|
54
35
|
};
|
|
55
|
-
|
|
56
36
|
const createFormLatestPublishedPartitionKey = params => {
|
|
57
37
|
return `${createFormPartitionKey(params)}#LP`;
|
|
58
38
|
};
|
|
59
|
-
|
|
60
39
|
const createFormGSIPartitionKey = params => {
|
|
61
40
|
const {
|
|
62
41
|
tenant,
|
|
@@ -68,13 +47,11 @@ const createFormStorageOperations = params => {
|
|
|
68
47
|
} = (0, _utils.parseIdentifier)(targetId);
|
|
69
48
|
return `T#${tenant}#L#${locale}#FB#F#${id}`;
|
|
70
49
|
};
|
|
71
|
-
|
|
72
50
|
const createRevisionSortKey = ({
|
|
73
51
|
id
|
|
74
52
|
}) => {
|
|
75
53
|
return `${id}`;
|
|
76
54
|
};
|
|
77
|
-
|
|
78
55
|
const createFormLatestSortKey = ({
|
|
79
56
|
id,
|
|
80
57
|
formId
|
|
@@ -82,7 +59,6 @@ const createFormStorageOperations = params => {
|
|
|
82
59
|
const value = (0, _utils.parseIdentifier)(id || formId);
|
|
83
60
|
return value.id;
|
|
84
61
|
};
|
|
85
|
-
|
|
86
62
|
const createLatestPublishedSortKey = ({
|
|
87
63
|
id,
|
|
88
64
|
formId
|
|
@@ -90,51 +66,42 @@ const createFormStorageOperations = params => {
|
|
|
90
66
|
const value = (0, _utils.parseIdentifier)(id || formId);
|
|
91
67
|
return value.id;
|
|
92
68
|
};
|
|
93
|
-
|
|
94
69
|
const createGSISortKey = version => {
|
|
95
70
|
return `${version}`;
|
|
96
71
|
};
|
|
97
|
-
|
|
98
72
|
const createFormType = () => {
|
|
99
73
|
return "fb.form";
|
|
100
74
|
};
|
|
101
|
-
|
|
102
75
|
const createFormLatestType = () => {
|
|
103
76
|
return "fb.form.latest";
|
|
104
77
|
};
|
|
105
|
-
|
|
106
78
|
const createFormLatestPublishedType = () => {
|
|
107
79
|
return "fb.form.latestPublished";
|
|
108
80
|
};
|
|
109
|
-
|
|
110
81
|
const createRevisionKeys = form => {
|
|
111
82
|
return {
|
|
112
83
|
PK: createFormPartitionKey(form),
|
|
113
84
|
SK: createRevisionSortKey(form)
|
|
114
85
|
};
|
|
115
86
|
};
|
|
116
|
-
|
|
117
87
|
const createLatestKeys = form => {
|
|
118
88
|
return {
|
|
119
89
|
PK: createFormLatestPartitionKey(form),
|
|
120
90
|
SK: createFormLatestSortKey(form)
|
|
121
91
|
};
|
|
122
92
|
};
|
|
123
|
-
|
|
124
93
|
const createLatestPublishedKeys = form => {
|
|
125
94
|
return {
|
|
126
95
|
PK: createFormLatestPublishedPartitionKey(form),
|
|
127
96
|
SK: createLatestPublishedSortKey(form)
|
|
128
97
|
};
|
|
129
98
|
};
|
|
130
|
-
|
|
131
99
|
const createGSIKeys = form => {
|
|
132
100
|
return {
|
|
133
101
|
GSI1_PK: createFormGSIPartitionKey(form),
|
|
134
102
|
GSI1_SK: createGSISortKey(form.version)
|
|
135
103
|
};
|
|
136
104
|
};
|
|
137
|
-
|
|
138
105
|
const createForm = async params => {
|
|
139
106
|
const {
|
|
140
107
|
form
|
|
@@ -142,12 +109,11 @@ const createFormStorageOperations = params => {
|
|
|
142
109
|
const revisionKeys = createRevisionKeys(form);
|
|
143
110
|
const latestKeys = createLatestKeys(form);
|
|
144
111
|
const gsiKeys = createGSIKeys(form);
|
|
145
|
-
const items = [entity.putBatch(
|
|
112
|
+
const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), revisionKeys), gsiKeys), {}, {
|
|
146
113
|
TYPE: createFormType()
|
|
147
|
-
})), entity.putBatch(
|
|
114
|
+
})), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestKeys), {}, {
|
|
148
115
|
TYPE: createFormLatestType()
|
|
149
116
|
}))];
|
|
150
|
-
|
|
151
117
|
try {
|
|
152
118
|
await (0, _batchWrite.batchWriteAll)({
|
|
153
119
|
table,
|
|
@@ -160,10 +126,8 @@ const createFormStorageOperations = params => {
|
|
|
160
126
|
form
|
|
161
127
|
});
|
|
162
128
|
}
|
|
163
|
-
|
|
164
129
|
return form;
|
|
165
130
|
};
|
|
166
|
-
|
|
167
131
|
const createFormFrom = async params => {
|
|
168
132
|
const {
|
|
169
133
|
form,
|
|
@@ -173,12 +137,11 @@ const createFormStorageOperations = params => {
|
|
|
173
137
|
const revisionKeys = createRevisionKeys(form);
|
|
174
138
|
const latestKeys = createLatestKeys(form);
|
|
175
139
|
const gsiKeys = createGSIKeys(form);
|
|
176
|
-
const items = [entity.putBatch(
|
|
140
|
+
const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), revisionKeys), gsiKeys), {}, {
|
|
177
141
|
TYPE: createFormType()
|
|
178
|
-
})), entity.putBatch(
|
|
142
|
+
})), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestKeys), {}, {
|
|
179
143
|
TYPE: createFormLatestType()
|
|
180
144
|
}))];
|
|
181
|
-
|
|
182
145
|
try {
|
|
183
146
|
await (0, _batchWrite.batchWriteAll)({
|
|
184
147
|
table,
|
|
@@ -193,10 +156,8 @@ const createFormStorageOperations = params => {
|
|
|
193
156
|
latest
|
|
194
157
|
});
|
|
195
158
|
}
|
|
196
|
-
|
|
197
159
|
return form;
|
|
198
160
|
};
|
|
199
|
-
|
|
200
161
|
const updateForm = async params => {
|
|
201
162
|
const {
|
|
202
163
|
form,
|
|
@@ -219,16 +180,14 @@ const createFormStorageOperations = params => {
|
|
|
219
180
|
}
|
|
220
181
|
});
|
|
221
182
|
const isLatestForm = latestForm ? latestForm.id === form.id : false;
|
|
222
|
-
const items = [entity.putBatch(
|
|
183
|
+
const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), revisionKeys), gsiKeys), {}, {
|
|
223
184
|
TYPE: createFormType()
|
|
224
185
|
}))];
|
|
225
|
-
|
|
226
186
|
if (isLatestForm) {
|
|
227
|
-
items.push(entity.putBatch(
|
|
187
|
+
items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestKeys), {}, {
|
|
228
188
|
TYPE: createFormLatestType()
|
|
229
189
|
})));
|
|
230
190
|
}
|
|
231
|
-
|
|
232
191
|
try {
|
|
233
192
|
await (0, _batchWrite.batchWriteAll)({
|
|
234
193
|
table,
|
|
@@ -243,10 +202,8 @@ const createFormStorageOperations = params => {
|
|
|
243
202
|
latestForm
|
|
244
203
|
});
|
|
245
204
|
}
|
|
246
|
-
|
|
247
205
|
return form;
|
|
248
206
|
};
|
|
249
|
-
|
|
250
207
|
const getForm = async params => {
|
|
251
208
|
const {
|
|
252
209
|
where
|
|
@@ -258,14 +215,11 @@ const createFormStorageOperations = params => {
|
|
|
258
215
|
published,
|
|
259
216
|
version
|
|
260
217
|
} = where;
|
|
261
|
-
|
|
262
218
|
if (latest && published) {
|
|
263
219
|
throw new _error.default("Cannot have both latest and published params.");
|
|
264
220
|
}
|
|
265
|
-
|
|
266
221
|
let partitionKey;
|
|
267
222
|
let sortKey;
|
|
268
|
-
|
|
269
223
|
if (latest) {
|
|
270
224
|
partitionKey = createFormLatestPartitionKey(where);
|
|
271
225
|
sortKey = createFormLatestSortKey(where);
|
|
@@ -280,7 +234,7 @@ const createFormStorageOperations = params => {
|
|
|
280
234
|
sortKey = createRevisionSortKey({
|
|
281
235
|
id: id || (0, _utils.createIdentifier)({
|
|
282
236
|
id: formId,
|
|
283
|
-
version
|
|
237
|
+
version: version
|
|
284
238
|
})
|
|
285
239
|
});
|
|
286
240
|
} else {
|
|
@@ -288,12 +242,10 @@ const createFormStorageOperations = params => {
|
|
|
288
242
|
where
|
|
289
243
|
});
|
|
290
244
|
}
|
|
291
|
-
|
|
292
245
|
const keys = {
|
|
293
246
|
PK: partitionKey,
|
|
294
247
|
SK: sortKey
|
|
295
248
|
};
|
|
296
|
-
|
|
297
249
|
try {
|
|
298
250
|
const item = await (0, _get.get)({
|
|
299
251
|
entity,
|
|
@@ -306,7 +258,6 @@ const createFormStorageOperations = params => {
|
|
|
306
258
|
});
|
|
307
259
|
}
|
|
308
260
|
};
|
|
309
|
-
|
|
310
261
|
const listForms = async params => {
|
|
311
262
|
const {
|
|
312
263
|
sort,
|
|
@@ -322,7 +273,6 @@ const createFormStorageOperations = params => {
|
|
|
322
273
|
}
|
|
323
274
|
};
|
|
324
275
|
let results;
|
|
325
|
-
|
|
326
276
|
try {
|
|
327
277
|
results = await (0, _query.queryAll)(queryAllParams);
|
|
328
278
|
} catch (ex) {
|
|
@@ -331,15 +281,11 @@ const createFormStorageOperations = params => {
|
|
|
331
281
|
partitionKey: queryAllParams.partitionKey
|
|
332
282
|
});
|
|
333
283
|
}
|
|
334
|
-
|
|
335
284
|
const totalCount = results.length;
|
|
336
|
-
|
|
337
|
-
const where = _objectSpread({}, initialWhere);
|
|
285
|
+
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
338
286
|
/**
|
|
339
287
|
* We need to remove conditions so we do not filter by them again.
|
|
340
288
|
*/
|
|
341
|
-
|
|
342
|
-
|
|
343
289
|
delete where.tenant;
|
|
344
290
|
delete where.locale;
|
|
345
291
|
const filteredItems = (0, _filter.filterItems)({
|
|
@@ -353,7 +299,7 @@ const createFormStorageOperations = params => {
|
|
|
353
299
|
sort,
|
|
354
300
|
fields: formDynamoDbFields
|
|
355
301
|
});
|
|
356
|
-
const start = (0, _cursor.decodeCursor)(after) || 0;
|
|
302
|
+
const start = parseInt((0, _cursor.decodeCursor)(after) || "0") || 0;
|
|
357
303
|
const hasMoreItems = totalCount > start + limit;
|
|
358
304
|
const end = limit > totalCount + start + limit ? undefined : start + limit;
|
|
359
305
|
const items = sortedItems.slice(start, end);
|
|
@@ -361,7 +307,6 @@ const createFormStorageOperations = params => {
|
|
|
361
307
|
* Although we do not need a cursor here, we will use it as such to keep it standardized.
|
|
362
308
|
* Number is simply encoded.
|
|
363
309
|
*/
|
|
364
|
-
|
|
365
310
|
const cursor = items.length > 0 ? (0, _cursor.encodeCursor)(start + limit) : null;
|
|
366
311
|
const meta = {
|
|
367
312
|
hasMoreItems,
|
|
@@ -373,7 +318,6 @@ const createFormStorageOperations = params => {
|
|
|
373
318
|
meta
|
|
374
319
|
};
|
|
375
320
|
};
|
|
376
|
-
|
|
377
321
|
const listFormRevisions = async params => {
|
|
378
322
|
const {
|
|
379
323
|
where: initialWhere,
|
|
@@ -398,7 +342,6 @@ const createFormStorageOperations = params => {
|
|
|
398
342
|
}
|
|
399
343
|
};
|
|
400
344
|
let items = [];
|
|
401
|
-
|
|
402
345
|
try {
|
|
403
346
|
items = await (0, _query.queryAll)(queryAllParams);
|
|
404
347
|
} catch (ex) {
|
|
@@ -407,13 +350,10 @@ const createFormStorageOperations = params => {
|
|
|
407
350
|
options: queryAllParams.options
|
|
408
351
|
});
|
|
409
352
|
}
|
|
410
|
-
|
|
411
|
-
const where = _objectSpread({}, initialWhere);
|
|
353
|
+
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
412
354
|
/**
|
|
413
355
|
* We need to remove conditions so we do not filter by them again.
|
|
414
356
|
*/
|
|
415
|
-
|
|
416
|
-
|
|
417
357
|
delete where.id;
|
|
418
358
|
delete where.formId;
|
|
419
359
|
delete where.tenant;
|
|
@@ -430,24 +370,21 @@ const createFormStorageOperations = params => {
|
|
|
430
370
|
fields: formDynamoDbFields
|
|
431
371
|
});
|
|
432
372
|
};
|
|
433
|
-
|
|
434
373
|
const deleteForm = async params => {
|
|
435
374
|
const {
|
|
436
375
|
form
|
|
437
376
|
} = params;
|
|
438
377
|
let items;
|
|
439
378
|
/**
|
|
440
|
-
* This will find all form
|
|
379
|
+
* This will find all form records.
|
|
441
380
|
*/
|
|
442
|
-
|
|
443
381
|
const queryAllParams = {
|
|
444
382
|
entity,
|
|
445
383
|
partitionKey: createFormPartitionKey(form),
|
|
446
384
|
options: {
|
|
447
|
-
|
|
385
|
+
beginsWith: form.formId
|
|
448
386
|
}
|
|
449
387
|
};
|
|
450
|
-
|
|
451
388
|
try {
|
|
452
389
|
items = await (0, _query.queryAll)(queryAllParams);
|
|
453
390
|
} catch (ex) {
|
|
@@ -456,25 +393,20 @@ const createFormStorageOperations = params => {
|
|
|
456
393
|
options: queryAllParams.options
|
|
457
394
|
});
|
|
458
395
|
}
|
|
459
|
-
|
|
460
396
|
let hasLatestPublishedRecord = false;
|
|
461
397
|
const deleteItems = items.map(item => {
|
|
462
398
|
if (!hasLatestPublishedRecord && item.published) {
|
|
463
399
|
hasLatestPublishedRecord = true;
|
|
464
400
|
}
|
|
465
|
-
|
|
466
401
|
return entity.deleteBatch({
|
|
467
402
|
PK: item.PK,
|
|
468
403
|
SK: item.SK
|
|
469
404
|
});
|
|
470
405
|
});
|
|
471
|
-
|
|
472
406
|
if (hasLatestPublishedRecord) {
|
|
473
407
|
deleteItems.push(entity.deleteBatch(createLatestPublishedKeys(items[0])));
|
|
474
408
|
}
|
|
475
|
-
|
|
476
409
|
deleteItems.push(entity.deleteBatch(createLatestKeys(items[0])));
|
|
477
|
-
|
|
478
410
|
try {
|
|
479
411
|
await (0, _batchWrite.batchWriteAll)({
|
|
480
412
|
table,
|
|
@@ -483,7 +415,6 @@ const createFormStorageOperations = params => {
|
|
|
483
415
|
} catch (ex) {
|
|
484
416
|
throw new _error.default(ex.message || "Could not delete form and it's submissions.", ex.code || "DELETE_FORM_AND_SUBMISSIONS_ERROR");
|
|
485
417
|
}
|
|
486
|
-
|
|
487
418
|
return form;
|
|
488
419
|
};
|
|
489
420
|
/**
|
|
@@ -492,8 +423,6 @@ const createFormStorageOperations = params => {
|
|
|
492
423
|
* - get previously published revision and update the record if it exists or delete if it does not
|
|
493
424
|
* - update latest record if current one is the latest
|
|
494
425
|
*/
|
|
495
|
-
|
|
496
|
-
|
|
497
426
|
const deleteFormRevision = async params => {
|
|
498
427
|
const {
|
|
499
428
|
form,
|
|
@@ -507,7 +436,6 @@ const createFormStorageOperations = params => {
|
|
|
507
436
|
const isLatest = latestForm ? latestForm.id === form.id : false;
|
|
508
437
|
const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;
|
|
509
438
|
const items = [entity.deleteBatch(revisionKeys)];
|
|
510
|
-
|
|
511
439
|
if (isLatest || isLatestPublished) {
|
|
512
440
|
/**
|
|
513
441
|
* Sort out the latest published record.
|
|
@@ -516,24 +444,21 @@ const createFormStorageOperations = params => {
|
|
|
516
444
|
const previouslyPublishedForm = revisions.filter(f => !!f.publishedOn && f.version !== form.version).sort((a, b) => {
|
|
517
445
|
return new Date(b.publishedOn).getTime() - new Date(a.publishedOn).getTime();
|
|
518
446
|
}).shift();
|
|
519
|
-
|
|
520
447
|
if (previouslyPublishedForm) {
|
|
521
|
-
items.push(entity.putBatch(
|
|
448
|
+
items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, previouslyPublishedForm), createLatestPublishedKeys(previouslyPublishedForm)), {}, {
|
|
522
449
|
GSI1_PK: null,
|
|
523
450
|
GSI1_SK: null,
|
|
524
451
|
TYPE: createFormLatestPublishedType()
|
|
525
452
|
})));
|
|
526
453
|
} else {
|
|
527
|
-
items.push(entity.deleteBatch(createLatestPublishedKeys(
|
|
454
|
+
items.push(entity.deleteBatch(createLatestPublishedKeys(form)));
|
|
528
455
|
}
|
|
529
456
|
}
|
|
530
457
|
/**
|
|
531
458
|
* Sort out the latest record.
|
|
532
459
|
*/
|
|
533
|
-
|
|
534
|
-
|
|
535
460
|
if (isLatest) {
|
|
536
|
-
items.push(entity.putBatch(
|
|
461
|
+
items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, previous), latestKeys), {}, {
|
|
537
462
|
GSI1_PK: null,
|
|
538
463
|
GSI1_SK: null,
|
|
539
464
|
TYPE: createFormLatestType()
|
|
@@ -543,8 +468,6 @@ const createFormStorageOperations = params => {
|
|
|
543
468
|
/**
|
|
544
469
|
* Now save the batch data.
|
|
545
470
|
*/
|
|
546
|
-
|
|
547
|
-
|
|
548
471
|
try {
|
|
549
472
|
await (0, _batchWrite.batchWriteAll)({
|
|
550
473
|
table,
|
|
@@ -560,6 +483,7 @@ const createFormStorageOperations = params => {
|
|
|
560
483
|
});
|
|
561
484
|
}
|
|
562
485
|
};
|
|
486
|
+
|
|
563
487
|
/**
|
|
564
488
|
* We need to save form in:
|
|
565
489
|
* - regular form record
|
|
@@ -567,8 +491,6 @@ const createFormStorageOperations = params => {
|
|
|
567
491
|
* - latest form record - if form is latest one
|
|
568
492
|
* - elasticsearch latest form record
|
|
569
493
|
*/
|
|
570
|
-
|
|
571
|
-
|
|
572
494
|
const publishForm = async params => {
|
|
573
495
|
const {
|
|
574
496
|
form,
|
|
@@ -598,22 +520,19 @@ const createFormStorageOperations = params => {
|
|
|
598
520
|
/**
|
|
599
521
|
* Update revision and latest published records
|
|
600
522
|
*/
|
|
601
|
-
|
|
602
|
-
const items = [entity.putBatch(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, form), revisionKeys), gsiKeys), {}, {
|
|
523
|
+
const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), revisionKeys), gsiKeys), {}, {
|
|
603
524
|
TYPE: createFormType()
|
|
604
|
-
})), entity.putBatch(
|
|
525
|
+
})), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestPublishedKeys), {}, {
|
|
605
526
|
TYPE: createFormLatestPublishedType()
|
|
606
527
|
}))];
|
|
607
528
|
/**
|
|
608
529
|
* Update the latest form as well
|
|
609
530
|
*/
|
|
610
|
-
|
|
611
531
|
if (isLatestForm) {
|
|
612
|
-
items.push(entity.putBatch(
|
|
532
|
+
items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestKeys), {}, {
|
|
613
533
|
TYPE: createFormLatestType()
|
|
614
534
|
})));
|
|
615
535
|
}
|
|
616
|
-
|
|
617
536
|
try {
|
|
618
537
|
await (0, _batchWrite.batchWriteAll)({
|
|
619
538
|
table,
|
|
@@ -629,17 +548,15 @@ const createFormStorageOperations = params => {
|
|
|
629
548
|
latestPublishedKeys
|
|
630
549
|
});
|
|
631
550
|
}
|
|
632
|
-
|
|
633
551
|
return form;
|
|
634
552
|
};
|
|
553
|
+
|
|
635
554
|
/**
|
|
636
555
|
* We need to:
|
|
637
556
|
* - update form revision record
|
|
638
557
|
* - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise
|
|
639
558
|
* - if is latest update the Elasticsearch record
|
|
640
559
|
*/
|
|
641
|
-
|
|
642
|
-
|
|
643
560
|
const unpublishForm = async params => {
|
|
644
561
|
const {
|
|
645
562
|
form,
|
|
@@ -672,12 +589,11 @@ const createFormStorageOperations = params => {
|
|
|
672
589
|
});
|
|
673
590
|
const isLatest = latestForm ? latestForm.id === form.id : false;
|
|
674
591
|
const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;
|
|
675
|
-
const items = [entity.putBatch(
|
|
592
|
+
const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), revisionKeys), gsiKeys), {}, {
|
|
676
593
|
TYPE: createFormType()
|
|
677
594
|
}))];
|
|
678
|
-
|
|
679
595
|
if (isLatest) {
|
|
680
|
-
entity.putBatch(
|
|
596
|
+
entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, form), latestKeys), {}, {
|
|
681
597
|
TYPE: createFormLatestType()
|
|
682
598
|
}));
|
|
683
599
|
}
|
|
@@ -685,8 +601,6 @@ const createFormStorageOperations = params => {
|
|
|
685
601
|
* In case previously published revision exists, replace current one with that one.
|
|
686
602
|
* And if it does not, delete the record.
|
|
687
603
|
*/
|
|
688
|
-
|
|
689
|
-
|
|
690
604
|
if (isLatestPublished) {
|
|
691
605
|
const revisions = await listFormRevisions({
|
|
692
606
|
where: {
|
|
@@ -699,16 +613,14 @@ const createFormStorageOperations = params => {
|
|
|
699
613
|
sort: ["savedOn_DESC"]
|
|
700
614
|
});
|
|
701
615
|
const previouslyPublishedRevision = revisions.shift();
|
|
702
|
-
|
|
703
616
|
if (previouslyPublishedRevision) {
|
|
704
|
-
items.push(entity.putBatch(
|
|
617
|
+
items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, previouslyPublishedRevision), latestPublishedKeys), {}, {
|
|
705
618
|
TYPE: createFormLatestPublishedType()
|
|
706
619
|
})));
|
|
707
620
|
} else {
|
|
708
621
|
items.push(entity.deleteBatch(latestPublishedKeys));
|
|
709
622
|
}
|
|
710
623
|
}
|
|
711
|
-
|
|
712
624
|
try {
|
|
713
625
|
await (0, _batchWrite.batchWriteAll)({
|
|
714
626
|
table,
|
|
@@ -726,7 +638,6 @@ const createFormStorageOperations = params => {
|
|
|
726
638
|
});
|
|
727
639
|
}
|
|
728
640
|
};
|
|
729
|
-
|
|
730
641
|
return {
|
|
731
642
|
createForm,
|
|
732
643
|
createFormFrom,
|
|
@@ -741,5 +652,4 @@ const createFormStorageOperations = params => {
|
|
|
741
652
|
createFormPartitionKey
|
|
742
653
|
};
|
|
743
654
|
};
|
|
744
|
-
|
|
745
655
|
exports.createFormStorageOperations = createFormStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFormStorageOperations","params","entity","table","plugins","formDynamoDbFields","byType","FormDynamoDbFieldPlugin","type","createFormPartitionKey","tenant","locale","createFormLatestPartitionKey","createFormLatestPublishedPartitionKey","createFormGSIPartitionKey","id","targetId","parseIdentifier","createRevisionSortKey","createFormLatestSortKey","formId","value","createLatestPublishedSortKey","createGSISortKey","version","createFormType","createFormLatestType","createFormLatestPublishedType","createRevisionKeys","form","PK","SK","createLatestKeys","createLatestPublishedKeys","createGSIKeys","GSI1_PK","GSI1_SK","createForm","revisionKeys","latestKeys","gsiKeys","items","putBatch","TYPE","batchWriteAll","ex","WebinyError","message","code","createFormFrom","original","latest","updateForm","latestForm","getForm","where","isLatestForm","push","published","partitionKey","sortKey","createIdentifier","keys","item","get","cleanupItem","listForms","sort","limit","initialWhere","after","queryAllParams","options","gte","results","queryAll","totalCount","length","filteredItems","filterItems","fields","sortedItems","sortItems","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slice","cursor","encodeCursor","meta","listFormRevisions","index","deleteForm","beginsWith","hasLatestPublishedRecord","deleteItems","map","deleteBatch","deleteFormRevision","revisions","previous","latestPublishedForm","find","rev","isLatest","isLatestPublished","previouslyPublishedForm","filter","f","publishedOn","a","b","Date","getTime","shift","publishForm","latestPublishedKeys","unpublishForm","version_not","publishedOn_not","previouslyPublishedRevision"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n FbForm,\n FormBuilderStorageOperationsCreateFormFromParams,\n FormBuilderStorageOperationsCreateFormParams,\n FormBuilderStorageOperationsDeleteFormParams,\n FormBuilderStorageOperationsDeleteFormRevisionParams,\n FormBuilderStorageOperationsGetFormParams,\n FormBuilderStorageOperationsListFormRevisionsParams,\n FormBuilderStorageOperationsListFormRevisionsParamsWhere,\n FormBuilderStorageOperationsListFormsParams,\n FormBuilderStorageOperationsListFormsResponse,\n FormBuilderStorageOperationsPublishFormParams,\n FormBuilderStorageOperationsUnpublishFormParams,\n FormBuilderStorageOperationsUpdateFormParams\n} from \"@webiny/api-form-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n FormBuilderFormCreateGSIPartitionKeyParams,\n FormBuilderFormCreatePartitionKeyParams,\n FormBuilderFormStorageOperations\n} from \"~/types\";\nimport { FormDynamoDbFieldPlugin } from \"~/plugins/FormDynamoDbFieldPlugin\";\nimport { decodeCursor, encodeCursor } from \"@webiny/db-dynamodb/utils/cursor\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\ntype DbRecord<T = any> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\ninterface Keys {\n PK: string;\n SK: string;\n}\n\ninterface FormLatestSortKeyParams {\n id?: string;\n formId?: string;\n}\n\ninterface GsiKeys {\n GSI1_PK: string;\n GSI1_SK: string;\n}\n\nexport interface CreateFormStorageOperationsParams {\n entity: Entity<any>;\n table: Table;\n plugins: PluginsContainer;\n}\n\nexport const createFormStorageOperations = (\n params: CreateFormStorageOperationsParams\n): FormBuilderFormStorageOperations => {\n const { entity, table, plugins } = params;\n\n const formDynamoDbFields = plugins.byType<FormDynamoDbFieldPlugin>(\n FormDynamoDbFieldPlugin.type\n );\n\n const createFormPartitionKey = (params: FormBuilderFormCreatePartitionKeyParams): string => {\n const { tenant, locale } = params;\n\n return `T#${tenant}#L#${locale}#FB#F`;\n };\n\n const createFormLatestPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#L`;\n };\n\n const createFormLatestPublishedPartitionKey = (\n params: FormBuilderFormCreatePartitionKeyParams\n ): string => {\n return `${createFormPartitionKey(params)}#LP`;\n };\n\n const createFormGSIPartitionKey = (\n params: FormBuilderFormCreateGSIPartitionKeyParams\n ): string => {\n const { tenant, locale, id: targetId } = params;\n const { id } = parseIdentifier(targetId);\n\n return `T#${tenant}#L#${locale}#FB#F#${id}`;\n };\n\n const createRevisionSortKey = ({ id }: { id: string }): string => {\n return `${id}`;\n };\n\n const createFormLatestSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createLatestPublishedSortKey = ({ id, formId }: FormLatestSortKeyParams): string => {\n const value = parseIdentifier(id || formId);\n return value.id;\n };\n\n const createGSISortKey = (version: number) => {\n return `${version}`;\n };\n\n const createFormType = (): string => {\n return \"fb.form\";\n };\n\n const createFormLatestType = (): string => {\n return \"fb.form.latest\";\n };\n\n const createFormLatestPublishedType = (): string => {\n return \"fb.form.latestPublished\";\n };\n\n const createRevisionKeys = (form: FbForm): Keys => {\n return {\n PK: createFormPartitionKey(form),\n SK: createRevisionSortKey(form)\n };\n };\n\n const createLatestKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPartitionKey(form),\n SK: createFormLatestSortKey(form)\n };\n };\n\n const createLatestPublishedKeys = (form: FbForm): Keys => {\n return {\n PK: createFormLatestPublishedPartitionKey(form),\n SK: createLatestPublishedSortKey(form)\n };\n };\n\n const createGSIKeys = (form: FbForm): GsiKeys => {\n return {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n };\n\n const createForm = async (\n params: FormBuilderStorageOperationsCreateFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not insert form data into table.\",\n ex.code || \"CREATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n form\n }\n );\n }\n return form;\n };\n\n const createFormFrom = async (\n params: FormBuilderStorageOperationsCreateFormFromParams\n ): Promise<FbForm> => {\n const { form, original, latest } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n ];\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create form data in the table, from existing form.\",\n ex.code || \"CREATE_FORM_FROM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latest\n }\n );\n }\n\n return form;\n };\n\n const updateForm = async (\n params: FormBuilderStorageOperationsUpdateFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update form data in the table.\",\n ex.code || \"UPDATE_FORM_ERROR\",\n {\n revisionKeys,\n latestKeys,\n original,\n form,\n latestForm\n }\n );\n }\n\n return form;\n };\n\n const getForm = async (\n params: FormBuilderStorageOperationsGetFormParams\n ): Promise<FbForm | null> => {\n const { where } = params;\n const { id, formId, latest, published, version } = where;\n if (latest && published) {\n throw new WebinyError(\"Cannot have both latest and published params.\");\n }\n let partitionKey: string;\n let sortKey: string;\n if (latest) {\n partitionKey = createFormLatestPartitionKey(where);\n sortKey = createFormLatestSortKey(where);\n } else if (published && !version) {\n /**\n * Because of the specifics how DynamoDB works, we must not load the published record if version is sent.\n */\n partitionKey = createFormLatestPublishedPartitionKey(where);\n sortKey = createLatestPublishedSortKey(where);\n } else if (id || version) {\n partitionKey = createFormPartitionKey(where);\n sortKey = createRevisionSortKey({\n id:\n id ||\n createIdentifier({\n id: formId as string,\n version: version as number\n })\n });\n } else {\n throw new WebinyError(\n \"Missing parameter to create a sort key.\",\n \"MISSING_WHERE_PARAMETER\",\n {\n where\n }\n );\n }\n\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n\n try {\n const item = await get<FbForm>({ entity, keys });\n return cleanupItem(entity, item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get form by keys.\",\n ex.code || \"GET_FORM_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const listForms = async (\n params: FormBuilderStorageOperationsListFormsParams\n ): Promise<FormBuilderStorageOperationsListFormsResponse> => {\n const { sort, limit, where: initialWhere, after } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormLatestPartitionKey(initialWhere),\n options: {\n gte: \" \"\n }\n };\n\n let results;\n try {\n results = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could list forms.\",\n ex.code || \"LIST_FORMS_ERROR\",\n {\n where: initialWhere,\n partitionKey: queryAllParams.partitionKey\n }\n );\n }\n const totalCount = results.length;\n\n const where: Partial<FormBuilderStorageOperationsListFormsParams[\"where\"]> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items: results,\n where,\n fields: formDynamoDbFields\n });\n\n const sortedItems = sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n\n const start = parseInt(decodeCursor(after) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const items = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = items.length > 0 ? encodeCursor(start + limit) : null;\n\n const meta = {\n hasMoreItems,\n totalCount,\n cursor\n };\n\n return {\n items,\n meta\n };\n };\n\n const listFormRevisions = async (\n params: FormBuilderStorageOperationsListFormRevisionsParams\n ): Promise<FbForm[]> => {\n const { where: initialWhere, sort } = params;\n const { id, formId, tenant, locale } = initialWhere;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormGSIPartitionKey({\n tenant,\n locale,\n id: formId || id\n }),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n\n let items: FbForm[] = [];\n try {\n items = await queryAll<FbForm>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms by given params.\",\n ex.code || \"QUERY_FORMS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n const where: Partial<FormBuilderStorageOperationsListFormRevisionsParamsWhere> = {\n ...initialWhere\n };\n /**\n * We need to remove conditions so we do not filter by them again.\n */\n delete where.id;\n delete where.formId;\n delete where.tenant;\n delete where.locale;\n\n const filteredItems = filterItems({\n plugins,\n items,\n where,\n fields: formDynamoDbFields\n });\n return sortItems({\n items: filteredItems,\n sort,\n fields: formDynamoDbFields\n });\n };\n\n const deleteForm = async (\n params: FormBuilderStorageOperationsDeleteFormParams\n ): Promise<FbForm> => {\n const { form } = params;\n let items: any[];\n /**\n * This will find all form records.\n */\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createFormPartitionKey(form),\n options: {\n beginsWith: form.formId\n }\n };\n try {\n items = await queryAll<DbRecord>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query forms and submissions by given params.\",\n ex.code || \"QUERY_FORM_AND_SUBMISSIONS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n let hasLatestPublishedRecord = false;\n\n const deleteItems = items.map(item => {\n if (!hasLatestPublishedRecord && item.published) {\n hasLatestPublishedRecord = true;\n }\n return entity.deleteBatch({\n PK: item.PK,\n SK: item.SK\n });\n });\n if (hasLatestPublishedRecord) {\n deleteItems.push(entity.deleteBatch(createLatestPublishedKeys(items[0])));\n }\n\n deleteItems.push(entity.deleteBatch(createLatestKeys(items[0])));\n\n try {\n await batchWriteAll({\n table,\n items: deleteItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form and it's submissions.\",\n ex.code || \"DELETE_FORM_AND_SUBMISSIONS_ERROR\"\n );\n }\n return form;\n };\n /**\n * We need to:\n * - delete current revision\n * - get previously published revision and update the record if it exists or delete if it does not\n * - update latest record if current one is the latest\n */\n const deleteFormRevision = async (\n params: FormBuilderStorageOperationsDeleteFormRevisionParams\n ): Promise<FbForm> => {\n const { form, revisions, previous } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n\n const latestForm = revisions[0];\n const latestPublishedForm = revisions.find(rev => rev.published === true);\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [entity.deleteBatch(revisionKeys)];\n\n if (isLatest || isLatestPublished) {\n /**\n * Sort out the latest published record.\n */\n if (isLatestPublished) {\n const previouslyPublishedForm = revisions\n .filter(f => !!f.publishedOn && f.version !== form.version)\n .sort((a, b) => {\n return (\n new Date(b.publishedOn as string).getTime() -\n new Date(a.publishedOn as string).getTime()\n );\n })\n .shift();\n if (previouslyPublishedForm) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedForm,\n ...createLatestPublishedKeys(previouslyPublishedForm),\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(createLatestPublishedKeys(form)));\n }\n }\n /**\n * Sort out the latest record.\n */\n if (isLatest) {\n items.push(\n entity.putBatch({\n ...previous,\n ...latestKeys,\n GSI1_PK: null,\n GSI1_SK: null,\n TYPE: createFormLatestType()\n })\n );\n }\n }\n /**\n * Now save the batch data.\n */\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete form revision from table.\",\n ex.code || \"DELETE_FORM_REVISION_ERROR\",\n {\n form,\n latestForm,\n revisionKeys,\n latestKeys\n }\n );\n }\n };\n\n /**\n * We need to save form in:\n * - regular form record\n * - latest published form record\n * - latest form record - if form is latest one\n * - elasticsearch latest form record\n */\n const publishForm = async (\n params: FormBuilderStorageOperationsPublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n\n const latestKeys = createLatestKeys(form);\n\n const latestPublishedKeys = createLatestPublishedKeys(form);\n\n const gsiKeys = {\n GSI1_PK: createFormGSIPartitionKey(form),\n GSI1_SK: createGSISortKey(form.version)\n };\n\n const { locale, tenant, formId } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const isLatestForm = latestForm ? latestForm.id === form.id : false;\n /**\n * Update revision and latest published records\n */\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n }),\n entity.putBatch({\n ...form,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n ];\n /**\n * Update the latest form as well\n */\n if (isLatestForm) {\n items.push(\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish form.\",\n ex.code || \"PUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n return form;\n };\n\n /**\n * We need to:\n * - update form revision record\n * - if latest published (LP) is current form, find the previously published record and update LP if there is some previously published, delete otherwise\n * - if is latest update the Elasticsearch record\n */\n const unpublishForm = async (\n params: FormBuilderStorageOperationsUnpublishFormParams\n ): Promise<FbForm> => {\n const { form, original } = params;\n\n const revisionKeys = createRevisionKeys(form);\n const latestKeys = createLatestKeys(form);\n const latestPublishedKeys = createLatestPublishedKeys(form);\n const gsiKeys = createGSIKeys(form);\n\n const { formId, tenant, locale } = form;\n\n const latestForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n latest: true\n }\n });\n\n const latestPublishedForm = await getForm({\n where: {\n formId,\n tenant,\n locale,\n published: true\n }\n });\n\n const isLatest = latestForm ? latestForm.id === form.id : false;\n const isLatestPublished = latestPublishedForm ? latestPublishedForm.id === form.id : false;\n\n const items = [\n entity.putBatch({\n ...form,\n ...revisionKeys,\n ...gsiKeys,\n TYPE: createFormType()\n })\n ];\n\n if (isLatest) {\n entity.putBatch({\n ...form,\n ...latestKeys,\n TYPE: createFormLatestType()\n });\n }\n /**\n * In case previously published revision exists, replace current one with that one.\n * And if it does not, delete the record.\n */\n if (isLatestPublished) {\n const revisions = await listFormRevisions({\n where: {\n formId,\n tenant,\n locale,\n version_not: form.version,\n publishedOn_not: null\n },\n sort: [\"savedOn_DESC\"]\n });\n\n const previouslyPublishedRevision = revisions.shift();\n if (previouslyPublishedRevision) {\n items.push(\n entity.putBatch({\n ...previouslyPublishedRevision,\n ...latestPublishedKeys,\n TYPE: createFormLatestPublishedType()\n })\n );\n } else {\n items.push(entity.deleteBatch(latestPublishedKeys));\n }\n }\n\n try {\n await batchWriteAll({\n table,\n items\n });\n return form;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish form.\",\n ex.code || \"UNPUBLISH_FORM_ERROR\",\n {\n form,\n original,\n latestForm,\n revisionKeys,\n latestKeys,\n latestPublishedKeys\n }\n );\n }\n };\n\n return {\n createForm,\n createFormFrom,\n updateForm,\n listForms,\n listFormRevisions,\n getForm,\n deleteForm,\n deleteFormRevision,\n publishForm,\n unpublishForm,\n createFormPartitionKey\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Entity, Table } from "dynamodb-toolbox";
|
|
2
2
|
import { FormBuilderSettingsStorageOperations } from "../../types";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateSettingsStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
table: Table;
|
|
6
6
|
}
|
|
7
|
-
export declare const createSettingsStorageOperations: (params:
|
|
7
|
+
export declare const createSettingsStorageOperations: (params: CreateSettingsStorageOperationsParams) => FormBuilderSettingsStorageOperations;
|