import { prisma } from "./prisma"; export type SiteSettings = { requireLoginForContactDetails: boolean; }; const SETTINGS_ID = "default"; const DEFAULT_SETTINGS: SiteSettings = { requireLoginForContactDetails: true, }; function mergeSettings( input: Partial | null | undefined, ): SiteSettings { return { requireLoginForContactDetails: input?.requireLoginForContactDetails ?? DEFAULT_SETTINGS.requireLoginForContactDetails, }; } export async function getSiteSettings(): Promise { try { const existing = await prisma.siteSettings.findUnique({ where: { id: SETTINGS_ID }, }); if (!existing) { return DEFAULT_SETTINGS; } return mergeSettings(existing); } catch (error) { console.error( "Failed to load site settings, falling back to defaults", error, ); return DEFAULT_SETTINGS; } } export async function updateSiteSettings( input: Partial, ): Promise { const current = await getSiteSettings(); const data = mergeSettings({ ...current, ...input }); const saved = await prisma.siteSettings.upsert({ where: { id: SETTINGS_ID }, update: data, create: { id: SETTINGS_ID, ...data }, }); return mergeSettings(saved); }