import type { AccessResponseDTO } from "../../common/dto/shared/access.dto"; import { projectAccess } from "../domain/access/access-projection"; import type { AccessSnapshot } from "./access.repository"; export function buildAccessResponse(snapshot: AccessSnapshot): AccessResponseDTO { const items = [...snapshot.context.catalog, ...snapshot.workspace.items]; return { localEnvironments: snapshot.localEnvironments ?? [], directoryEnvironmentIds: [...(snapshot.directoryEnvironmentIds ?? [])], 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), }; }