import { createHash } from 'node:crypto' /** * Der Zwischenspeicherschlüssel eines Exports. * * `sha256(Ziel + Stand + Stufe + Vorlagenversion)`, siehe docs/08. Die * **Stufe gehört hinein**: zwei Abrufer verschiedener Stufen bekommen nicht * dasselbe PDF, und ein Treffer im Zwischenspeicher darf niemandem ein * Dokument geben, das für eine höhere Stufe gerendert wurde. * * Der Stand (`updatedAt`) sorgt dafür, dass eine geänderte Akte neu gerendert * wird - ein Export darf nie einen älteren Stand zeigen, als die Akte hat. */ export function exportCacheKey(input: { kind: string targetId: string updatedAt: Date clearanceLevel: number templateVersion: number | string }): string { return createHash('sha256') .update( [ input.kind, input.targetId, input.updatedAt.toISOString(), String(input.clearanceLevel), String(input.templateVersion), ].join('|'), ) .digest('hex') }