diff --git a/packages/rdx-ddd/src/domain-entity.ts b/packages/rdx-ddd/src/domain-entity.ts index 7ee3b2b8..0204c655 100644 --- a/packages/rdx-ddd/src/domain-entity.ts +++ b/packages/rdx-ddd/src/domain-entity.ts @@ -5,7 +5,7 @@ export abstract class DomainEntity { public readonly id: UniqueID; protected constructor(props: T, id?: UniqueID) { - this.id = id ? id : UniqueID.generateNewID().data; + this.id = id ? id : UniqueID.generateNewID(); this.props = props; } diff --git a/packages/rdx-ddd/src/helpers/extract-or-push-error.ts b/packages/rdx-ddd/src/helpers/extract-or-push-error.ts index c2979c1b..f2b56d4e 100644 --- a/packages/rdx-ddd/src/helpers/extract-or-push-error.ts +++ b/packages/rdx-ddd/src/helpers/extract-or-push-error.ts @@ -39,7 +39,12 @@ export function extractOrPushError( if (isValidationErrorCollection(error)) { // Agrega todos los detalles de error al array proporcionado - errors.push(...error.details); + error.details.forEach((error) => { + errors.push({ + ...error, + path: error.path || path, + }); + }); } else if (isDomainValidationError(error)) { errors.push({ path, message: error.detail, value: error.cause?.toString() }); } else { diff --git a/packages/rdx-ddd/src/value-objects/unique-id.ts b/packages/rdx-ddd/src/value-objects/unique-id.ts index 642de3cf..81fd889b 100644 --- a/packages/rdx-ddd/src/value-objects/unique-id.ts +++ b/packages/rdx-ddd/src/value-objects/unique-id.ts @@ -1,5 +1,6 @@ import { Result, generateUUIDv4 } from "@repo/rdx-utils"; import * as z from "zod/v4"; +import { translateZodValidationError } from "../helpers"; import { ValueObject } from "./value-object"; export class UniqueID extends ValueObject { @@ -13,23 +14,23 @@ export class UniqueID extends ValueObject { if (!generateOnEmpty) { return Result.fail(new Error("ID cannot be undefined or null")); } - return UniqueID.generateNewID(); + return Result.ok(UniqueID.generateNewID()); } // biome-ignore lint/style/noNonNullAssertion: - const result = UniqueID.validate(id!); + const valueIsValid = UniqueID.validate(id!); - return result.success - ? Result.ok(new UniqueID(result.data)) - : Result.fail(new Error(result.error.message)); + if (!valueIsValid.success) { + return Result.fail( + translateZodValidationError("UniqueID creation failed", valueIsValid.error) + ); + } + + return Result.ok(new UniqueID(valueIsValid.data)); } - static generate(): Result { - return UniqueID.generateNewID(); - } - - static generateNewID(): Result { - return Result.ok(new UniqueID(generateUUIDv4())); + static generateNewID(): UniqueID { + return new UniqueID(generateUUIDv4()); } getProps(): string {