import { AggregateRoot } from '@nestjs/cqrs' ; import { CreateItemDto , UpdateItemDto } from '@application/dtos' ; import { ItemCreatedEvent , ItemDeletedEvent , ItemOwnerNotifiedEvent , ItemUpdatedEvent , } from '../events/impl' ; import { ItemEventType } from '../types' ; export class Item extends AggregateRoot { constructor ( private readonly id ? ) { super ( ) ; } deleteItem ( ) { this . apply ( new ItemDeletedEvent ( this . id ) ) ; } createItem ( createItemDto ) { this . apply ( new ItemCreatedEvent ( createItemDto ) ) ; } updateItem ( updateItemDto ) { this . apply ( new ItemUpdatedEvent ( updateItemDto ) ) ; } notifyItemOwner ( event ) { this . apply ( new ItemOwnerNotifiedEvent ( event ) ) ; } }