@webiny/api-page-builder-so-ddb
Version:
The DynamoDB storage operations Webiny Page Builder API.
202 lines (200 loc) • 7.46 kB
JavaScript
"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