UNPKG

@webiny/api-form-builder-so-ddb

Version:

[![](https://img.shields.io/npm/dw/@webiny/api-form-builder-so-ddb.svg)](https://www.npmjs.com/package/@webiny/api-form-builder-so-ddb) [![](https://img.shields.io/npm/v/@webiny/api-form-builder-so-ddb.svg)](https://www.npmjs.com/package/@webiny/api-form

137 lines (135 loc) 4.31 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { createFormBuilderStorageOperations: true }; exports.createFormBuilderStorageOperations = void 0; var _filters = _interopRequireDefault(require("@webiny/db-dynamodb/plugins/filters")); var _fields = _interopRequireDefault(require("./operations/submission/fields")); var _fields2 = _interopRequireDefault(require("./operations/form/fields")); var _error = _interopRequireDefault(require("@webiny/error")); var _types = require("./types"); var _table = require("./definitions/table"); var _form = require("./definitions/form"); var _submission = require("./definitions/submission"); var _system = require("./definitions/system"); var _settings = require("./definitions/settings"); var _system2 = require("./operations/system"); var _submission2 = require("./operations/submission"); var _settings2 = require("./operations/settings"); var _form2 = require("./operations/form"); var _plugins = require("@webiny/plugins"); var _plugins2 = require("./plugins"); Object.keys(_plugins2).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _plugins2[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _plugins2[key]; } }); }); var _api = require("@webiny/api"); const reservedFields = ["PK", "SK", "index", "data", "TYPE", "__type", "GSI1_PK", "GSI1_SK"]; const isReserved = name => { if (reservedFields.includes(name) === false) { return; } throw new _error.default(`Attribute name "${name}" is not allowed.`, "ATTRIBUTE_NOT_ALLOWED", { name }); }; const createFormBuilderStorageOperations = params => { const { attributes, table: tableName, documentClient, plugins: userPlugins } = params; if (attributes) { Object.values(attributes).forEach(attrs => { Object.keys(attrs).forEach(isReserved); }); } const plugins = new _plugins.PluginsContainer([ /** * User defined plugins. */ userPlugins || [], /** * Form submission DynamoDB fields. */ (0, _fields.default)(), /** * Form DynamoDB fields. */ (0, _fields2.default)(), /** * DynamoDB filter plugins for the where conditions. */ (0, _filters.default)()]); const table = (0, _table.createTable)({ tableName, documentClient }); const entities = { /** * Regular entities. */ form: (0, _form.createFormEntity)({ entityName: _types.ENTITIES.FORM, table, attributes: attributes ? attributes[_types.ENTITIES.FORM] : {} }), submission: (0, _submission.createSubmissionEntity)({ entityName: _types.ENTITIES.SUBMISSION, table, attributes: attributes ? attributes[_types.ENTITIES.SUBMISSION] : {} }), system: (0, _system.createSystemEntity)({ entityName: _types.ENTITIES.SYSTEM, table, attributes: attributes ? attributes[_types.ENTITIES.SYSTEM] : {} }), settings: (0, _settings.createSettingsEntity)({ entityName: _types.ENTITIES.SETTINGS, table, attributes: attributes ? attributes[_types.ENTITIES.SETTINGS] : {} }) }; return { beforeInit: async context => { const types = [_plugins2.FormDynamoDbFieldPlugin.type, _plugins2.FormSubmissionDynamoDbFieldPlugin.type, _api.CompressorPlugin.type]; for (const type of types) { plugins.mergeByType(context.plugins, type); } }, getTable: () => table, getEntities: () => entities, ...(0, _system2.createSystemStorageOperations)({ table, entity: entities.system }), ...(0, _settings2.createSettingsStorageOperations)({ table, entity: entities.settings }), ...(0, _form2.createFormStorageOperations)({ table, entity: entities.form, plugins }), ...(0, _submission2.createSubmissionStorageOperations)({ table, entity: entities.submission, plugins }) }; }; exports.createFormBuilderStorageOperations = createFormBuilderStorageOperations; //# sourceMappingURL=index.js.map