first commit

This commit is contained in:
2026-10-03 13:40:26 +02:00
parent 732a5b5a16
commit 566f415fa7
555 changed files with 62704 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import { ProjectCreatedEvent } from '@task-stream/api/tracker/domain';
import { UpsertMaterializedProjectRepository } from '../ports/upsert-materialized-project.repository';
import { UserDirectory } from '../ports/user-directory';
import { ReadModelNotifier, versionOf } from './read-model-notifier';
@EventsHandler(ProjectCreatedEvent)
export class ProjectCreatedEventHandler
implements IEventHandler<ProjectCreatedEvent>
{
constructor(
private readonly upsertMaterializedProjectRepository: UpsertMaterializedProjectRepository,
private readonly users: UserDirectory,
private readonly notifier: ReadModelNotifier,
) {}
async handle(event: ProjectCreatedEvent) {
const { project } = event;
const users = await this.users.refs(project.members.map((m) => m.userId));
await this.upsertMaterializedProjectRepository.upsert({
id: project.id,
key: project.key,
name: project.name,
description: project.description,
owner: users.of(project.ownerId),
members: project.members.map((m) => ({
user: users.of(m.userId),
role: m.role,
})),
createdAt: project.createdAt,
updatedAt: project.updatedAt,
version: versionOf(event),
});
await this.notifier.project(event, [project.ownerId]);
}
}