metis-desk/modules/companies/src/api/application/access-response.builder.ts

25 lines
951 B
TypeScript
Raw Normal View History

import type { AccessResponseDTO } from "../../common/dto/shared/access.dto";
import { projectAccess } from "../domain/access/access-projection";
import type { AccessSnapshot } from "./access.repository";
2026-10-10 10:01:58 +00:00
export function buildAccessResponse(snapshot: AccessSnapshot): AccessResponseDTO {
const items = [...snapshot.context.catalog, ...snapshot.workspace.items];
2026-10-10 10:01:58 +00:00
return {
items: items.map((item) => ({
id: item.id.toPrimitive(),
companyId: item.companyId.getOrUndefined()?.toPrimitive() ?? null,
values: item.values.data,
history: item.history.map((revision) => ({
id: revision.id.toPrimitive(),
actorId: revision.actorId.toPrimitive(),
actorName: snapshot.actors.get(revision.actorId.toPrimitive()) ?? "—",
recordedAt: revision.recordedAt,
values: revision.values.data,
})),
})),
...projectAccess(items, snapshot.context.people, snapshot.context.today),
};
}