Entidades
Entidades são objetos que possuem uma identidade única e continuam existindo ao longo do tempo, mesmo quando seus atributos mudam.
Características
- Possuem identidade única (ID)
- São mutáveis (seus atributos podem mudar)
- Implementam regras de negócio relacionadas
Exemplo de uso:
import { Entity, Optional, UniqueEntityId } from "@pedrohb/core-ddd";
export interface IUser {
name: string;
email: string;
password: string;
updatedAt?: Date | null;
createdAt: Date;
}
export class User extends Entity<IUser> {
get name() {
return this.props.name;
}
set name(name: string) {
this.props.name = name;
this.update();
}
get email() {
return this.props.email;
}
set email(email: string) {
this.props.email = email;
this.update();
}
get password() {
return this.props.password;
}
set password(password: string) {
this.props.password = password;
this.update();
}
get updatedAt() {
return this.props.updatedAt;
}
get createdAt() {
return this.props.createdAt;
}
private update() {
this.props.updatedAt = new Date();
}
public static create(
props: Optional<IUser, "createdAt">,
id?: UniqueEntityId,
) {
const user = new User(
{
...props,
createdAt: props.createdAt ?? new Date(),
},
id,
);
return user;
}
}Dica: Use o método estático
create para instanciar novas entidades. Isso permite validar as propriedades antes da criação.Exemplo de entidade:
{
"_id": {
"_id": "63d95821-677f-41b1-bed9-d5471011e60e"
},
"props": {
"name": "Lorena Xavier",
"email": "Lorena.Xavier94@yahoo.com",
"password": "CVYDIe6hCBGuTSy",
"createdAt": "2025-04-21T15:53:12.964Z"
}
}