@cyber-rom/nestjs-scylladb
Version:
Based on https://www.npmjs.com/package/@ouato/nestjs-express-cassandra With support columns name mapping
37 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformFrom = exports.transformTo = void 0;
const decorator_utils_1 = require("./decorator.utils");
function assignWithMapper(dst, src, mapper) {
if (!mapper) {
return Object.assign(dst, src);
}
for (const key of Object.keys(src)) {
const dstKey = mapper[key] || key;
dst[dstKey] = src[key];
}
return dst;
}
function transformTo(target, entity) {
if (!target || !(target && typeof target === 'function') || !entity) {
return entity;
}
const mapper = (0, decorator_utils_1.getColumnsMapper)(new target());
if (Array.isArray(entity)) {
return entity.map((entity) => assignWithMapper(new target(), entity, mapper));
}
return assignWithMapper(new target(), entity, mapper);
}
exports.transformTo = transformTo;
function transformFrom(target, entity) {
if (!target || !(target && typeof target === 'function') || !entity) {
return entity;
}
const mapper = (0, decorator_utils_1.getPropertiesMapper)(new target());
if (Array.isArray(entity)) {
return entity.map((entity) => assignWithMapper(new target(), entity, mapper));
}
return assignWithMapper(new target(), entity, mapper);
}
exports.transformFrom = transformFrom;
//# sourceMappingURL=transform-entity.utils.js.map