UNPKG

mvom

Version:

Multivalue Object Mapper

46 lines (41 loc) 1.87 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _utils = require("../utils"); var _BaseScalarArrayType = _interopRequireDefault(require("./BaseScalarArrayType")); /** Nested Scalar Array Schema Type */ class NestedArrayType extends _BaseScalarArrayType.default { constructor(valueSchemaType) { super(valueSchemaType); } /** Get value from mv data */ get(record) { const value = this.valueSchemaType.getFromMvData(record); return (0, _utils.ensureArray)(value).map(itemValue => (0, _utils.ensureArray)(itemValue).map(nestedValue => this.valueSchemaType.transformFromDb(nestedValue))); } /** Set specified nested array value into mv record */ set(originalRecord, setValue) { return this.valueSchemaType.setIntoMvData(originalRecord, (0, _utils.ensureArray)(setValue).map(value => (0, _utils.ensureArray)(value).map(nestedValue => this.valueSchemaType.transformToDb(nestedValue)))); } /** Create an array of foreign key definitions that will be validated before save */ transformForeignKeyDefinitionsToDb(value) { return (0, _utils.ensureArray)(value).flat(Infinity).map(nestedValue => this.valueSchemaType.transformForeignKeyDefinitionsToDb(nestedValue)).flat(); } /** Validate the nested array */ validate(value) { return (0, _utils.ensureArray)(value).reduce((acc, arrayItem, index) => { (0, _utils.ensureArray)(arrayItem).forEach((nestedArrayItem, nestedIndex) => { const result = this.valueSchemaType.validate(nestedArrayItem); if (result.length > 0) { const key = `${index}.${nestedIndex}`; acc.set(key, result); } }); return acc; }, new Map()); } } var _default = exports.default = NestedArrayType;