UNPKG

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

Version:

The DynamoDB + Elasticsearch storage operations Webiny Page Builder API.

256 lines (254 loc) 9.87 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 _apiElasticsearch = require("@webiny/api-elasticsearch"); var _types = require("./types"); var _table = require("./definitions/table"); var _tableElasticsearch = require("./definitions/tableElasticsearch"); var _indices = require("./elasticsearch/indices"); var _createElasticsearchIndex = require("./elasticsearch/createElasticsearchIndex"); 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 _pageElasticsearchEntity = require("./definitions/pageElasticsearchEntity"); 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 _createIndexTaskPlugin = require("./tasks/createIndexTaskPlugin"); var _api = require("@webiny/api"); const createStorageOperations = params => { const { documentClient, elasticsearch, table, esTable, attributes, plugins: userPlugins } = params; const tableInstance = (0, _table.createTable)({ table, documentClient }); const tableElasticsearchInstance = (0, _tableElasticsearch.createElasticsearchTable)({ table: esTable, 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.createPagesElasticsearchFields)(), /** * Page fields required for filtering/sorting when using dynamodb. */ (0, _fields4.createPagesDynamoDbFields)(), /** * Built-in Elasticsearch index templates */ (0, _indices.elasticsearchIndexPlugins)(), /** * 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] : {} }), pagesEs: (0, _pageElasticsearchEntity.createPageElasticsearchEntity)({ entityName: _types.ENTITIES.PAGES_ES, table: tableElasticsearchInstance, attributes: attributes ? attributes[_types.ENTITIES.PAGES_ES] : {} }), 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 => { context.db.registry.register({ item: entities.pages, app: "pb", tags: ["regular", entities.pages.name] }); context.db.registry.register({ item: entities.pagesEs, app: "pb", tags: ["es", entities.pagesEs.name] }); const types = [_apiElasticsearch.ElasticsearchQueryBuilderOperatorPlugin.type, // Page Builder _plugins2.BlockCategoryDynamoDbElasticFieldPlugin.type, _plugins2.CategoryDynamoDbElasticFieldPlugin.type, _plugins2.IndexPageDataPlugin.type, _plugins2.MenuDynamoDbElasticFieldPlugin.type, _plugins2.PageBlockDynamoDbFieldPlugin.type, _plugins2.PageDynamoDbElasticsearchFieldPlugin.type, _plugins2.PageElasticsearchBodyModifierPlugin.type, _plugins2.PageElasticsearchFieldPlugin.type, _plugins2.PageElasticsearchIndexPlugin.type, _plugins2.PageElasticsearchQueryModifierPlugin.type, _plugins2.PageElasticsearchSortModifierPlugin.type, _plugins2.PageElementDynamoDbElasticFieldPlugin.type, _plugins2.SearchLatestPagesPlugin.type, _plugins2.SearchPagesPlugin.type, _plugins2.SearchPublishedPagesPlugin.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(); context.plugins.register([(0, _createIndexTaskPlugin.createIndexTaskPlugin)(), (0, _indices.elasticsearchIndexPlugins)()]); }, init: async context => { context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({ locale, tenant }) => { await (0, _createElasticsearchIndex.createElasticsearchIndex)({ elasticsearch, plugins, locale: locale.code, tenant }); }); }, getEntities: () => entities, getTable: () => tableInstance, getEsTable: () => tableElasticsearchInstance, 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, esEntity: entities.pagesEs, elasticsearch, plugins }), categories, blockCategories, pageBlocks, pageTemplates }; }; exports.createStorageOperations = createStorageOperations; //# sourceMappingURL=index.js.map