UNPKG

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

Version:

The DynamoDB storage operations Webiny Page Builder API.

202 lines (200 loc) 7.46 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 _plugins = require("@webiny/plugins"); var _types = require("./types"); var _table = require("./definitions/table"); var _categoryEntity = require("./definitions/categoryEntity"); var _fields = require("./operations/category/fields"); var _category = require("./operations/category"); var _menuEntity = require("./definitions/menuEntity"); var _fields2 = require("./operations/menu/fields"); var _menu = require("./operations/menu"); var _pageElementEntity = require("./definitions/pageElementEntity"); var _fields3 = require("./operations/pageElement/fields"); var _pageElement = require("./operations/pageElement"); var _settingsEntity = require("./definitions/settingsEntity"); var _settings = require("./operations/settings"); var _systemEntity = require("./definitions/systemEntity"); var _system = require("./operations/system"); var _pageEntity = require("./definitions/pageEntity"); var _fields4 = require("./operations/pages/fields"); var _pages = require("./operations/pages"); var _blockCategoryEntity = require("./definitions/blockCategoryEntity"); var _fields5 = require("./operations/blockCategory/fields"); var _blockCategory = require("./operations/blockCategory"); var _pageBlockEntity = require("./definitions/pageBlockEntity"); var _fields6 = require("./operations/pageBlock/fields"); var _pageBlock = require("./operations/pageBlock"); var _pageTemplateEntity = require("./definitions/pageTemplateEntity"); var _fields7 = require("./operations/pageTemplate/fields"); var _pageTemplate = require("./operations/pageTemplate"); 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 createStorageOperations = params => { const { documentClient, table, attributes, plugins: userPlugins } = params; const tableInstance = (0, _table.createTable)({ table, documentClient }); const plugins = new _plugins.PluginsContainer([ /** * User defined custom plugins. */ ...(userPlugins || []), /** * DynamoDB filter plugins for the where conditions. */ (0, _filters.default)(), /** * Category fields required for filtering/sorting. */ (0, _fields.createCategoryDynamoDbFields)(), /** * Menu fields required for filtering/sorting. */ (0, _fields2.createMenuDynamoDbFields)(), /** * Page element fields required for filtering/sorting. */ (0, _fields3.createPageElementDynamoDbFields)(), /** * Page fields required for filtering/sorting. */ (0, _fields4.createPageFields)(), /** * Block Category fields required for filtering/sorting. */ (0, _fields5.createBlockCategoryDynamoDbFields)(), /** * Page Block fields required for filtering/sorting. */ (0, _fields6.createPageBlockDynamoDbFields)(), /** * Page Template fields required for filtering/sorting. */ (0, _fields7.createPageTemplateDynamoDbFields)()]); const entities = { settings: (0, _settingsEntity.createSettingsEntity)({ entityName: _types.ENTITIES.SETTINGS, table: tableInstance }), system: (0, _systemEntity.createSystemEntity)({ entityName: _types.ENTITIES.SYSTEM, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.SYSTEM] : {} }), categories: (0, _categoryEntity.createCategoryEntity)({ entityName: _types.ENTITIES.CATEGORIES, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.CATEGORIES] : {} }), menus: (0, _menuEntity.createMenuEntity)({ entityName: _types.ENTITIES.MENUS, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.MENUS] : {} }), pageElements: (0, _pageElementEntity.createPageElementEntity)({ entityName: _types.ENTITIES.PAGE_ELEMENTS, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.PAGE_ELEMENTS] : {} }), pages: (0, _pageEntity.createPageEntity)({ entityName: _types.ENTITIES.PAGES, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.PAGES] : {} }), blockCategories: (0, _blockCategoryEntity.createBlockCategoryEntity)({ entityName: _types.ENTITIES.BLOCK_CATEGORIES, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.BLOCK_CATEGORIES] : {} }), pageBlocks: (0, _pageBlockEntity.createPageBlockEntity)({ entityName: _types.ENTITIES.PAGE_BLOCKS, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.PAGE_BLOCKS] : {} }), pageTemplates: (0, _pageTemplateEntity.createPageTemplateEntity)({ entityName: _types.ENTITIES.PAGE_TEMPLATES, table: tableInstance, attributes: attributes ? attributes[_types.ENTITIES.PAGE_TEMPLATES] : {} }) }; const categories = (0, _category.createCategoryStorageOperations)({ entity: entities.categories, plugins }); const blockCategories = (0, _blockCategory.createBlockCategoryStorageOperations)({ entity: entities.blockCategories, plugins }); const pageBlocks = (0, _pageBlock.createPageBlockStorageOperations)({ entity: entities.pageBlocks, plugins }); const pageTemplates = (0, _pageTemplate.createPageTemplateStorageOperations)({ entity: entities.pageTemplates, plugins }); return { beforeInit: async context => { const types = [_plugins2.BlockCategoryDynamoDbFieldPlugin.type, _plugins2.CategoryDynamoDbFieldPlugin.type, _plugins2.MenuDynamoDbFieldPlugin.type, _plugins2.PageBlockDynamoDbFieldPlugin.type, _plugins2.PageDynamoDbFieldPlugin.type, _plugins2.PageElementDynamoDbFieldPlugin.type, _plugins2.PageTemplateDynamoDbFieldPlugin.type, _api.CompressorPlugin.type]; for (const type of types) { plugins.mergeByType(context.plugins, type); } pageTemplates.dataLoader.clear(); pageBlocks.dataLoader.clear(); blockCategories.dataLoader.clear(); categories.dataLoader.clear(); }, getEntities: () => entities, getTable: () => tableInstance, system: (0, _system.createSystemStorageOperations)({ entity: entities.system }), settings: (0, _settings.createSettingsStorageOperations)({ entity: entities.settings }), menus: (0, _menu.createMenuStorageOperations)({ entity: entities.menus, plugins }), pageElements: (0, _pageElement.createPageElementStorageOperations)({ entity: entities.pageElements, plugins }), pages: (0, _pages.createPageStorageOperations)({ entity: entities.pages, plugins }), categories, blockCategories, pageBlocks, pageTemplates }; }; exports.createStorageOperations = createStorageOperations; //# sourceMappingURL=index.js.map