@webiny/api-form-builder-so-ddb
Version:
[](https://www.npmjs.com/package/@webiny/api-form-builder-so-ddb) [](https://www.npmjs.com/package/@webiny/api-form
137 lines (135 loc) • 4.31 kB
JavaScript
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
;