This commit is contained in:
David Arranz 2025-09-22 18:35:42 +02:00
parent a2b5c96cd7
commit 6cc728fb87
3 changed files with 19 additions and 13 deletions

View File

@ -5,7 +5,7 @@ export abstract class DomainEntity<T extends object> {
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;
}

View File

@ -39,7 +39,12 @@ export function extractOrPushError<T>(
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 {

View File

@ -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<string> {
@ -13,23 +14,23 @@ export class UniqueID extends ValueObject<string> {
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: <explanation>
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<UniqueID, never> {
return UniqueID.generateNewID();
}
static generateNewID(): Result<UniqueID, never> {
return Result.ok(new UniqueID(generateUUIDv4()));
static generateNewID(): UniqueID {
return new UniqueID(generateUUIDv4());
}
getProps(): string {