@hiki9/rich-domain
Version:
Rich Domain is a library that provides a set of tools to help you build complex business logic in NodeJS using Domain Driven Design principles.
48 lines • 2.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AutoMapperEntity = void 0;
const validator_1 = __importDefault(require("../../utils/validator"));
const ids_1 = require("./ids");
class AutoMapperEntity {
entityToObj(entity) {
const props = entity['props'];
const initialValues = {
id: entity.id.value,
createdAt: entity.createdAt ?? null,
updatedAt: entity.updatedAt ?? null
};
return Object.entries(props)
.reduce((accumulator, [key, instance]) => {
if (key === "id")
return accumulator;
if (instance instanceof Array) {
accumulator[key] = instance.map((item) => {
if (validator_1.default.isValueObject(item))
return item.toPrimitives();
else if (validator_1.default.isEntity(item) || validator_1.default.isAggregate(item))
return item.toPrimitives();
else if (item instanceof ids_1.Id)
return item.value;
else
return item;
});
}
else {
if (validator_1.default.isValueObject(instance))
accumulator[key] = instance.toPrimitives();
else if (validator_1.default.isEntity(instance) || validator_1.default.isAggregate(instance))
accumulator[key] = instance.toPrimitives();
else if (instance instanceof ids_1.Id)
accumulator[key] = instance.value;
else
accumulator[key] = instance;
}
return accumulator;
}, initialValues);
}
}
exports.AutoMapperEntity = AutoMapperEntity;
//# sourceMappingURL=auto-mapper-entity.js.map