@webiny/api-headless-cms-ddb
Version:
DynamoDB storage operations plugin for Headless CMS API.
80 lines (78 loc) • 2.55 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createRefFilterCreate = void 0;
var _error = _interopRequireDefault(require("@webiny/error"));
var _CmsEntryFieldFilterPlugin = require("../../../../plugins/CmsEntryFieldFilterPlugin");
var _where = require("../where");
var _transform = require("../transform");
const createRefFilterCreate = () => {
const plugin = new _CmsEntryFieldFilterPlugin.CmsEntryFieldFilterPlugin({
fieldType: "ref",
create: params => {
const {
valueFilterPlugins,
transformValuePlugins,
field
} = params;
let value = params.value;
if (!value) {
value = {
entryId: null
};
}
const propertyFilters = Object.keys(value);
if (propertyFilters.length === 0) {
return null;
}
const filters = [];
for (const propertyFilter of propertyFilters) {
const whereParams = (0, _where.extractWhereParams)(propertyFilter);
if (!whereParams) {
continue;
}
const {
fieldId: propertyId,
operation: propertyOperation,
negate
} = whereParams;
const transformValuePlugin = transformValuePlugins[field.type];
const transformValueCallable = value => {
if (!transformValuePlugin) {
return value;
}
return transformValuePlugin.transform({
field,
value
});
};
const filterPlugin = valueFilterPlugins[propertyOperation];
if (!filterPlugin) {
throw new _error.default(`Missing operation filter for "${propertyOperation}".`, "MISSING_OPERATION_FILTER");
}
const paths = [field.createPath({
field
}), propertyId];
filters.push({
field,
path: paths.join("."),
fieldPathId: [...field.parents.map(f => f.fieldId), field.fieldId].join("."),
plugin: filterPlugin,
negate,
compareValue: (0, _transform.transformValue)({
value: value[propertyFilter],
transform: transformValueCallable
}),
transformValue: transformValueCallable
});
}
return filters;
}
});
plugin.name = `headless-cms.ddb.filter.ref`;
return plugin;
};
exports.createRefFilterCreate = createRefFilterCreate;
//# sourceMappingURL=refFilterCreate.js.map