@webiny/api-headless-cms-ddb
Version:
DynamoDB storage operations plugin for Headless CMS API.
127 lines (125 loc) • 4.39 kB
JavaScript
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
;