UNPKG

@webiny/api-headless-cms-ddb

Version:

DynamoDB storage operations plugin for Headless CMS API.

80 lines (78 loc) 2.55 kB
"use strict"; 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