UNPKG

@webiny/api-headless-cms-ddb

Version:

DynamoDB storage operations plugin for Headless CMS API.

127 lines (125 loc) 4.39 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = { createStorageOperations: true }; exports.createStorageOperations = void 0; var _filters = _interopRequireDefault(require("@webiny/db-dynamodb/plugins/filters")); var _dynamoDb = _interopRequireDefault(require("./dynamoDb")); var _types = require("./types"); var _table = require("./definitions/table"); var _system = require("./definitions/system"); var _group = require("./definitions/group"); var _model = require("./definitions/model"); var _entry = require("./definitions/entry"); var _plugins = require("@webiny/plugins"); var _system2 = require("./operations/system"); var _group2 = require("./operations/group"); var _model2 = require("./operations/model"); var _entry2 = require("./operations/entry"); var _plugins2 = require("./operations/entry/filtering/plugins"); var _plugins3 = require("./plugins"); Object.keys(_plugins3).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _plugins3[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { return _plugins3[key]; } }); }); var _ValueFilterPlugin = require("@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin"); var _apiHeadlessCms = require("@webiny/api-headless-cms"); var _api = require("@webiny/api"); const createStorageOperations = params => { const { attributes, table, documentClient, plugins: userPlugins } = params; const tableInstance = (0, _table.createTable)({ table, documentClient }); const entities = { system: (0, _system.createSystemEntity)({ entityName: _types.ENTITIES.SYSTEM, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.SYSTEM] : {} }), groups: (0, _group.createGroupEntity)({ entityName: _types.ENTITIES.GROUPS, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.GROUPS] : {} }), models: (0, _model.createModelEntity)({ entityName: _types.ENTITIES.MODELS, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.MODELS] : {} }), entries: (0, _entry.createEntryEntity)({ entityName: _types.ENTITIES.ENTRIES, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.ENTRIES] : {} }) }; const plugins = new _plugins.PluginsContainer([ /** * DynamoDB filter plugins for the where conditions. */ (0, _filters.default)(), /** * Field plugins for DynamoDB. */ (0, _dynamoDb.default)(), /** * Filter create plugins. */ (0, _plugins2.createFilterCreatePlugins)(), /** * User defined custom plugins. */ ...(userPlugins || [])]); const entries = (0, _entry2.createEntriesStorageOperations)({ entity: entities.entries, plugins }); return { name: "dynamodb", beforeInit: async context => { const types = ["cms-model-field-to-graphql", _plugins3.CmsEntryFieldFilterPathPlugin.type, _plugins3.CmsFieldFilterValueTransformPlugin.type, _plugins3.CmsEntryFieldFilterPlugin.type, _plugins3.CmsEntryFieldSortingPlugin.type, _ValueFilterPlugin.ValueFilterPlugin.type, _apiHeadlessCms.StorageOperationsCmsModelPlugin.type, _apiHeadlessCms.StorageTransformPlugin.type, _api.CompressorPlugin.type]; /** * Collect all required plugins from parent context. */ for (const type of types) { plugins.mergeByType(context.plugins, type); } /** * Pass the plugins to the parent context. */ context.plugins.register([(0, _dynamoDb.default)()]); entries.dataLoaders.clearAll(); }, getEntities: () => entities, getTable: () => tableInstance, system: (0, _system2.createSystemStorageOperations)({ entity: entities.system }), groups: (0, _group2.createGroupsStorageOperations)({ entity: entities.groups, plugins }), models: (0, _model2.createModelsStorageOperations)({ entity: entities.models }), entries }; }; exports.createStorageOperations = createStorageOperations; //# sourceMappingURL=index.js.map