UNPKG

@webiny/api-headless-cms-ddb

Version:

DynamoDB storage operations plugin for Headless CMS API.

90 lines (88 loc) 2.74 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.objectFilterCreate = void 0; var _CmsEntryFieldFilterPlugin = require("../../../../plugins/CmsEntryFieldFilterPlugin"); var _where = require("../where"); var _error = _interopRequireDefault(require("@webiny/error")); var _transform = require("../transform"); const objectFilterCreate = () => { const plugin = new _CmsEntryFieldFilterPlugin.CmsEntryFieldFilterPlugin({ fieldType: "object", create: params => { const { value: objectValue, valueFilterPlugins, transformValuePlugins, getFilterCreatePlugin, field: parentField, fields } = params; const filters = []; for (const key in objectValue) { const value = objectValue[key]; if (value === undefined) { continue; } const whereParams = (0, _where.extractWhereParams)(key); if (!whereParams) { continue; } const { negate, fieldId, operation } = whereParams; const fieldPath = parentField.parents.map(p => p.fieldId).concat([parentField.fieldId, fieldId]).join("."); const field = fields[fieldPath]; if (!field) { throw new _error.default(`There is no field with the field path "${fieldPath}".`, "FIELD_ERROR", { fieldId }); } const filterCreatePlugin = getFilterCreatePlugin(field.type); const transformValuePlugin = transformValuePlugins[field.type]; const transformValueCallable = value => { if (!transformValuePlugin) { return value; } return transformValuePlugin.transform({ field, value }); }; const result = filterCreatePlugin.create({ key, value, valueFilterPlugins, transformValuePlugins, getFilterCreatePlugin, operation, negate, field, fields, compareValue: (0, _transform.transformValue)({ value, transform: transformValueCallable }), transformValue: transformValueCallable }); if (!result) { continue; } if (Array.isArray(result)) { filters.push(...result); continue; } filters.push(result); } return filters; } }); plugin.name = `headless-cms.ddb.filter.object`; return plugin; }; exports.objectFilterCreate = objectFilterCreate; //# sourceMappingURL=objectFilterCreate.js.map