Uecko_ERP/packages/rdx-ddd/src/aggregate-root.ts

36 lines
921 B
TypeScript
Raw Normal View History

2025-02-01 21:48:13 +00:00
import { DomainEntity } from "./domain-entity";
import { IDomainEvent } from "./events";
export abstract class AggregateRoot<T extends object> extends DomainEntity<T> {
private _domainEvents: IDomainEvent[] = [];
private logDomainEventAdded(event: IDomainEvent): void {
const thisClass = Reflect.getPrototypeOf(this);
const domainEventClass = Reflect.getPrototypeOf(event);
}
/**
2025-09-27 11:52:30 +00:00
* Agregar un evento de dominio al agregado
2025-02-01 21:48:13 +00:00
*/
protected addDomainEvent(event: IDomainEvent): void {
this._domainEvents.push(event);
// Log the domain event
this.logDomainEventAdded(event);
}
/**
2025-09-27 11:52:30 +00:00
* Obtener los eventos de dominio pendientes
2025-02-01 21:48:13 +00:00
*/
get domainEvents(): IDomainEvent[] {
return this._domainEvents;
}
/**
2025-09-27 11:52:30 +00:00
* Limpiar la lista de eventos después de procesarlos
2025-02-01 21:48:13 +00:00
*/
public clearDomainEvents(): void {
this._domainEvents.splice(0, this._domainEvents.length);
}
}