@webiny/api-form-builder-so-ddb-es 0.0.0-mt-1

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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/configurations.d.ts +9 -0
  4. package/configurations.js +28 -0
  5. package/definitions/elasticsearch.d.ts +8 -0
  6. package/definitions/elasticsearch.js +47 -0
  7. package/definitions/form.d.ts +8 -0
  8. package/definitions/form.js +104 -0
  9. package/definitions/settings.d.ts +8 -0
  10. package/definitions/settings.js +53 -0
  11. package/definitions/submission.d.ts +8 -0
  12. package/definitions/submission.js +74 -0
  13. package/definitions/system.d.ts +8 -0
  14. package/definitions/system.js +44 -0
  15. package/definitions/table.d.ts +7 -0
  16. package/definitions/table.js +23 -0
  17. package/definitions/tableElasticsearch.d.ts +7 -0
  18. package/definitions/tableElasticsearch.js +23 -0
  19. package/index.d.ts +2 -0
  20. package/index.js +188 -0
  21. package/operations/form/elasticsearchBody.d.ts +13 -0
  22. package/operations/form/elasticsearchBody.js +187 -0
  23. package/operations/form/elasticsearchFields.d.ts +3 -0
  24. package/operations/form/elasticsearchFields.js +33 -0
  25. package/operations/form/fields.d.ts +3 -0
  26. package/operations/form/fields.js +15 -0
  27. package/operations/form/index.d.ts +17 -0
  28. package/operations/form/index.js +903 -0
  29. package/operations/settings/index.d.ts +7 -0
  30. package/operations/settings/index.js +122 -0
  31. package/operations/submission/elasticsearchBody.d.ts +13 -0
  32. package/operations/submission/elasticsearchBody.js +197 -0
  33. package/operations/submission/elasticsearchFields.d.ts +3 -0
  34. package/operations/submission/elasticsearchFields.js +30 -0
  35. package/operations/submission/index.d.ts +12 -0
  36. package/operations/submission/index.js +340 -0
  37. package/operations/system/createElasticsearchIndex.d.ts +6 -0
  38. package/operations/system/createElasticsearchIndex.js +70 -0
  39. package/operations/system/index.d.ts +7 -0
  40. package/operations/system/index.js +105 -0
  41. package/package.json +67 -0
  42. package/plugins/FormDynamoDbFieldPlugin.d.ts +4 -0
  43. package/plugins/FormDynamoDbFieldPlugin.js +17 -0
  44. package/plugins/FormElasticsearchBodyModifierPlugin.d.ts +4 -0
  45. package/plugins/FormElasticsearchBodyModifierPlugin.js +17 -0
  46. package/plugins/FormElasticsearchFieldPlugin.d.ts +4 -0
  47. package/plugins/FormElasticsearchFieldPlugin.js +17 -0
  48. package/plugins/FormElasticsearchQueryModifierPlugin.d.ts +4 -0
  49. package/plugins/FormElasticsearchQueryModifierPlugin.js +17 -0
  50. package/plugins/FormElasticsearchSortModifierPlugin.d.ts +4 -0
  51. package/plugins/FormElasticsearchSortModifierPlugin.js +17 -0
  52. package/plugins/SubmissionElasticsearchBodyModifierPlugin.d.ts +4 -0
  53. package/plugins/SubmissionElasticsearchBodyModifierPlugin.js +17 -0
  54. package/plugins/SubmissionElasticsearchFieldPlugin.d.ts +4 -0
  55. package/plugins/SubmissionElasticsearchFieldPlugin.js +17 -0
  56. package/plugins/SubmissionElasticsearchQueryModifierPlugin.d.ts +4 -0
  57. package/plugins/SubmissionElasticsearchQueryModifierPlugin.js +17 -0
  58. package/plugins/SubmissionElasticsearchSortModifierPlugin.d.ts +4 -0
  59. package/plugins/SubmissionElasticsearchSortModifierPlugin.js +17 -0
  60. package/types.d.ts +66 -0
  61. package/types.js +17 -0
  62. package/upgrades/5.16.0/index.d.ts +8 -0
  63. package/upgrades/5.16.0/index.js +141 -0
@@ -0,0 +1,4 @@
1
+ import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin";
2
+ export declare class FormElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.FormElasticsearchSortModifierPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ElasticsearchSortModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin");
13
+
14
+ class FormElasticsearchSortModifierPlugin extends _ElasticsearchSortModifierPlugin.ElasticsearchSortModifierPlugin {}
15
+
16
+ exports.FormElasticsearchSortModifierPlugin = FormElasticsearchSortModifierPlugin;
17
+ (0, _defineProperty2.default)(FormElasticsearchSortModifierPlugin, "type", "formBuilder.elasticsearch.modifier.sort.form");
@@ -0,0 +1,4 @@
1
+ import { ElasticsearchBodyModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin";
2
+ export declare class SubmissionElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SubmissionElasticsearchBodyModifierPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ElasticsearchBodyModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin");
13
+
14
+ class SubmissionElasticsearchBodyModifierPlugin extends _ElasticsearchBodyModifierPlugin.ElasticsearchBodyModifierPlugin {}
15
+
16
+ exports.SubmissionElasticsearchBodyModifierPlugin = SubmissionElasticsearchBodyModifierPlugin;
17
+ (0, _defineProperty2.default)(SubmissionElasticsearchBodyModifierPlugin, "type", "formBuilder.elasticsearch.modifier.body.submission");
@@ -0,0 +1,4 @@
1
+ import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin";
2
+ export declare class SubmissionElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SubmissionElasticsearchFieldPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ElasticsearchFieldPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin");
13
+
14
+ class SubmissionElasticsearchFieldPlugin extends _ElasticsearchFieldPlugin.ElasticsearchFieldPlugin {}
15
+
16
+ exports.SubmissionElasticsearchFieldPlugin = SubmissionElasticsearchFieldPlugin;
17
+ (0, _defineProperty2.default)(SubmissionElasticsearchFieldPlugin, "type", "formBuilder.elasticsearch.fieldDefinition.submission");
@@ -0,0 +1,4 @@
1
+ import { ElasticsearchQueryModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin";
2
+ export declare class SubmissionElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SubmissionElasticsearchQueryModifierPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ElasticsearchQueryModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin");
13
+
14
+ class SubmissionElasticsearchQueryModifierPlugin extends _ElasticsearchQueryModifierPlugin.ElasticsearchQueryModifierPlugin {}
15
+
16
+ exports.SubmissionElasticsearchQueryModifierPlugin = SubmissionElasticsearchQueryModifierPlugin;
17
+ (0, _defineProperty2.default)(SubmissionElasticsearchQueryModifierPlugin, "type", "formBuilder.elasticsearch.modifier.query.submission");
@@ -0,0 +1,4 @@
1
+ import { ElasticsearchSortModifierPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin";
2
+ export declare class SubmissionElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SubmissionElasticsearchSortModifierPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ElasticsearchSortModifierPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin");
13
+
14
+ class SubmissionElasticsearchSortModifierPlugin extends _ElasticsearchSortModifierPlugin.ElasticsearchSortModifierPlugin {}
15
+
16
+ exports.SubmissionElasticsearchSortModifierPlugin = SubmissionElasticsearchSortModifierPlugin;
17
+ (0, _defineProperty2.default)(SubmissionElasticsearchSortModifierPlugin, "type", "formBuilder.elasticsearch.modifier.sort.submission");
package/types.d.ts ADDED
@@ -0,0 +1,66 @@
1
+ import { FormBuilderStorageOperations as BaseFormBuilderStorageOperations, FormBuilderSystemStorageOperations as BaseFormBuilderSystemStorageOperations, FormBuilderSubmissionStorageOperations as BaseFormBuilderSubmissionStorageOperations, FormBuilderSettingsStorageOperations as BaseFormBuilderSettingsStorageOperations, FormBuilderFormStorageOperations as BaseFormBuilderFormStorageOperations } from "@webiny/api-form-builder/types";
2
+ import { DocumentClient } from "aws-sdk/clients/dynamodb";
3
+ import { Table, Entity } from "dynamodb-toolbox";
4
+ import { DynamoDBTypes } from "dynamodb-toolbox/dist/classes/Table";
5
+ import { EntityAttributeConfig, EntityCompositeAttributes } from "dynamodb-toolbox/dist/classes/Entity";
6
+ import { Client } from "@elastic/elasticsearch";
7
+ import { Plugin } from "@webiny/plugins";
8
+ export declare type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;
9
+ export declare type Attributes = Record<string, AttributeDefinition>;
10
+ export declare enum ENTITIES {
11
+ FORM = "FormBuilderForm",
12
+ ES_FORM = "FormBuilderFormEs",
13
+ SUBMISSION = "FormBuilderSubmission",
14
+ ES_SUBMISSION = "FormBuilderSubmissionEs",
15
+ SYSTEM = "FormBuilderSystem",
16
+ SETTINGS = "FormBuilderSettings"
17
+ }
18
+ export interface FormBuilderStorageOperationsFactoryParams {
19
+ documentClient: DocumentClient;
20
+ elasticsearch: Client;
21
+ table?: string;
22
+ esTable?: string;
23
+ attributes?: Record<ENTITIES, Attributes>;
24
+ plugins?: Plugin[];
25
+ }
26
+ export interface FormBuilderSystemCreateKeysParams {
27
+ tenant: string;
28
+ }
29
+ export interface FormBuilderSystemStorageOperations extends BaseFormBuilderSystemStorageOperations {
30
+ createSystemPartitionKey: (params: FormBuilderSystemCreateKeysParams) => string;
31
+ createSystemSortKey: () => string;
32
+ }
33
+ export interface FormBuilderFormCreateKeyParams {
34
+ id: string;
35
+ tenant: string;
36
+ locale: string;
37
+ }
38
+ export interface FormBuilderFormStorageOperations extends BaseFormBuilderFormStorageOperations {
39
+ createFormPartitionKey: (params: FormBuilderFormCreateKeyParams) => string;
40
+ }
41
+ export interface FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams {
42
+ tenant: string;
43
+ locale: string;
44
+ formId: string;
45
+ }
46
+ export interface FormBuilderSubmissionStorageOperations extends BaseFormBuilderSubmissionStorageOperations {
47
+ createSubmissionPartitionKey: (params: FormBuilderSubmissionStorageOperationsCreatePartitionKeyParams) => string;
48
+ createSubmissionSortKey: (id: string) => string;
49
+ }
50
+ export interface FormBuilderSettingsStorageOperationsCreatePartitionKeyParams {
51
+ tenant: string;
52
+ locale: string;
53
+ }
54
+ export interface FormBuilderSettingsStorageOperations extends BaseFormBuilderSettingsStorageOperations {
55
+ createSettingsPartitionKey: (params: FormBuilderSettingsStorageOperationsCreatePartitionKeyParams) => string;
56
+ createSettingsSortKey: () => string;
57
+ }
58
+ export declare type Entities = "form" | "esForm" | "submission" | "esSubmission" | "system" | "settings";
59
+ export interface FormBuilderStorageOperations extends BaseFormBuilderStorageOperations, FormBuilderSettingsStorageOperations, FormBuilderSubmissionStorageOperations, FormBuilderFormStorageOperations, FormBuilderSystemStorageOperations {
60
+ getTable(): Table;
61
+ getEsTable(): Table;
62
+ getEntities(): Record<Entities, Entity<any>>;
63
+ }
64
+ export interface FormBuilderStorageOperationsFactory {
65
+ (params: FormBuilderStorageOperationsFactoryParams): FormBuilderStorageOperations;
66
+ }
package/types.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ENTITIES = void 0;
7
+ let ENTITIES;
8
+ exports.ENTITIES = ENTITIES;
9
+
10
+ (function (ENTITIES) {
11
+ ENTITIES["FORM"] = "FormBuilderForm";
12
+ ENTITIES["ES_FORM"] = "FormBuilderFormEs";
13
+ ENTITIES["SUBMISSION"] = "FormBuilderSubmission";
14
+ ENTITIES["ES_SUBMISSION"] = "FormBuilderSubmissionEs";
15
+ ENTITIES["SYSTEM"] = "FormBuilderSystem";
16
+ ENTITIES["SETTINGS"] = "FormBuilderSettings";
17
+ })(ENTITIES || (exports.ENTITIES = ENTITIES = {}));
@@ -0,0 +1,8 @@
1
+ import { UpgradePlugin } from "@webiny/api-upgrade/types";
2
+ import { FormBuilderContext } from "@webiny/api-form-builder/types";
3
+ declare const _default: () => UpgradePlugin<FormBuilderContext>;
4
+ /**
5
+ * This upgrade adds:
6
+ * - formId (first part of the id) and webinyVersion to the form records
7
+ */
8
+ export default _default;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _query = require("@webiny/db-dynamodb/utils/query");
13
+
14
+ var _utils = require("@webiny/utils");
15
+
16
+ var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
17
+
18
+ var _error = _interopRequireDefault(require("@webiny/error"));
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ const upgradeForms = async params => {
25
+ const {
26
+ storageOperations,
27
+ tenant,
28
+ locale,
29
+ webinyVersion
30
+ } = params;
31
+ /**
32
+ * We need all of the forms from the database.
33
+ * We are getting them from the Elasticsearch because there is no general PK for the forms.
34
+ */
35
+
36
+ let forms = [];
37
+
38
+ try {
39
+ const {
40
+ items
41
+ } = await storageOperations.listForms({
42
+ where: {
43
+ latest: true,
44
+ tenant: tenant.id,
45
+ locale: locale.code
46
+ },
47
+ after: null,
48
+ limit: 10000,
49
+ sort: ["createdOn_DESC"]
50
+ });
51
+ forms = items;
52
+ } catch (ex) {
53
+ console.log(ex.message);
54
+ return;
55
+ }
56
+
57
+ if (forms.length === 0) {
58
+ return;
59
+ }
60
+
61
+ const entity = storageOperations.getEntities().form;
62
+ const items = [];
63
+ /**
64
+ * ## Regular DynamoDB table.
65
+ * We need to get all the records from all of the forms.
66
+ * Unfortunately, we need to query in a loop to be able to get those forms.
67
+ */
68
+
69
+ for (const form of forms) {
70
+ const {
71
+ id: formId
72
+ } = (0, _utils.parseIdentifier)(form.id);
73
+ const formRecords = await (0, _query.queryAll)({
74
+ entity,
75
+ partitionKey: storageOperations.createFormPartitionKey({
76
+ id: form.id,
77
+ tenant: tenant.id,
78
+ locale: locale.code
79
+ })
80
+ });
81
+
82
+ for (const record of formRecords) {
83
+ /**
84
+ * Checks for "just in case".
85
+ */
86
+ if (!record || !record.PK || !record.SK) {
87
+ continue;
88
+ }
89
+
90
+ items.push(entity.putBatch(_objectSpread(_objectSpread({}, record), {}, {
91
+ formId,
92
+ webinyVersion
93
+ })));
94
+ }
95
+ }
96
+ /**
97
+ * And finally write all the records to the database again.
98
+ */
99
+
100
+
101
+ try {
102
+ await (0, _batchWrite.batchWriteAll)({
103
+ table: entity.table,
104
+ items
105
+ });
106
+ } catch (ex) {
107
+ throw new _error.default("Could not update all form records.", "UPGRADE_FORM_RECORDS_ERROR", {
108
+ error: ex
109
+ });
110
+ }
111
+ /**
112
+ * ## Elasticsearch DynamoDB table.
113
+ */
114
+
115
+ };
116
+ /**
117
+ * This upgrade adds:
118
+ * - formId (first part of the id) and webinyVersion to the form records
119
+ */
120
+
121
+
122
+ var _default = () => {
123
+ return {
124
+ type: "api-upgrade",
125
+ app: "form-builder",
126
+ version: "5.16.0",
127
+ apply: async context => {
128
+ const tenant = context.tenancy.getCurrentTenant();
129
+ const locale = context.i18nContent.getLocale();
130
+ const storageOperations = context.formBuilder.storageOperations;
131
+ await upgradeForms({
132
+ storageOperations,
133
+ tenant,
134
+ locale,
135
+ webinyVersion: context.WEBINY_VERSION
136
+ });
137
+ }
138
+ };
139
+ };
140
+
141
+ exports.default = _default;