2026-10-03 13:19:20 +00:00
|
|
|
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
|
|
|
|
2026-10-03 13:19:20 +00:00
|
|
|
export function buildAccessResponse(snapshot: AccessSnapshot): AccessResponseDTO {
|
|
|
|
|
const items = [...snapshot.context.catalog, ...snapshot.workspace.items];
|
2026-10-10 10:01:58 +00:00
|
|
|
|
2026-10-03 13:19:20 +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),
|
|
|
|
|
};
|
|
|
|
|
}
|