mvom
Version:
Multivalue Object Mapper
44 lines (39 loc) • 1.58 kB
JavaScript
;
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;