import type { PrismaClient } from '@prisma/client' import { uniqueSlug } from '@/lib/slug' /** * Bestimmt den Bezeichner für die öffentliche URL einer Erklärung. * * Er wird aus dem Titel abgeleitet und gegen die bereits vergebenen Bezeichner * eindeutig gemacht. Beim Bearbeiten bleibt der bestehende Bezeichner erhalten, * solange der Titel unverändert ist – veröffentlichte Links sollen nicht * unbemerkt ins Leere laufen. */ export async function resolveSlug( prisma: PrismaClient, title: string, existing?: { id: number; title: string; slug: string } ) { if (existing && existing.title.trim() === title.trim()) { return existing.slug } const vergeben = new Set( ( await prisma.privacyPolicy.findMany({ where: existing ? { NOT: { id: existing.id } } : undefined, select: { slug: true }, }) ).map((row) => row.slug) ) return uniqueSlug(title, vergeben) }