NPMGitHub

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"
  }
}