UNPKG

mvom

Version:

Multivalue Object Mapper

44 lines (39 loc) 1.58 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")); /** Scalar Array Schema Type */ class ArrayType 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 => this.valueSchemaType.transformFromDb(itemValue)); } /** Set specified array value into mv record */ set(originalRecord, setValue) { return this.valueSchemaType.setIntoMvData(originalRecord, (0, _utils.ensureArray)(setValue).map(value => this.valueSchemaType.transformToDb(value))); } /** Create an array of foreign key definitions that will be validated before save */ transformForeignKeyDefinitionsToDb(value) { return (0, _utils.ensureArray)(value).map(itemValue => this.valueSchemaType.transformForeignKeyDefinitionsToDb(itemValue)).flat(); } /** Validate the array */ validate(value) { return (0, _utils.ensureArray)(value).reduce((acc, arrayItem, index) => { const result = this.valueSchemaType.validate(arrayItem); if (result.length > 0) { const key = String(index); acc.set(key, result); } return acc; }, new Map()); } } var _default = exports.default = ArrayType;