Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 8x 8x 10x 10x 10x 8x 8x 8x | import { Task } from '../../domain/entities/Task';
import { TaskTitle } from '../../domain/valueObjects/TaskTitle';
import { TaskPriority } from '../../domain/valueObjects/TaskPriority';
import { ITaskRepository } from '../../domain/repositories/ITaskRepository';
import { DomainEventPublisher } from '../services/DomainEventPublisher';
export class CreateTaskUseCase {
constructor(
private taskRepository: ITaskRepository,
private eventPublisher: DomainEventPublisher
) {}
async execute(
title: string,
priority: TaskPriority = TaskPriority.medium(),
dueDate?: Date
): Promise<Task> {
const taskTitle = TaskTitle.create(title);
const task = Task.create(taskTitle, priority, dueDate);
await this.taskRepository.save(task);
const events = task.pullDomainEvents();
for (const event of events) {
await this.eventPublisher.publish(event);
}
return task;
}
}
|