import "server-only"; import { prisma } from "@/lib/db"; export type InstanceSettings = { /** Dürfen Bearbeiter den Kurz-Link selbst vergeben und ändern? */ editorsMaySetSlug: boolean; }; export const DEFAULT_SETTINGS: InstanceSettings = { editorsMaySetSlug: false, }; /** * Bewusst ohne Zwischenspeicher — dieselbe Erfahrung wie beim * Erscheinungsbild: API-Route und Seite laufen in getrennten Modulinstanzen, * ein Puffer wäre nach dem Speichern veraltet. Es ist eine Abfrage auf den * Primärschlüssel einer Tabelle mit einer einzigen Zeile. */ export async function getSettings(): Promise { try { const zeile = await prisma.instanceSetting.findUnique({ where: { id: "instance" }, }); return zeile ? { editorsMaySetSlug: zeile.editorsMaySetSlug } : DEFAULT_SETTINGS; } catch (error) { // Ein Datenbankproblem darf nicht dazu führen, dass keine Seite erscheint. // Im Zweifel gilt die zurückhaltendere Einstellung. console.error("Einstellungen konnten nicht geladen werden:", error); return DEFAULT_SETTINGS; } } export async function saveSettings( update: Partial, ): Promise { await prisma.instanceSetting.upsert({ where: { id: "instance" }, update, create: { id: "instance", ...update }, }); return getSettings(); }