UNPKG

@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
"use strict"; 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