'use server' import type { FormSettingsData, FormSettingsResult, UpsertFormSettingsInput } from './types' import { requireRole, UserRole } from '@admin/auth/middleware' import db from '@admin/db' import { formSettings } from '@admin/db/schema' import { toActionError } from '@admin/utils/error/to-action-error' import { updateTag } from 'next/cache' import { formSettingsCacheTags } from './types' export async function upsertFormSettings( formName: string, data: UpsertFormSettingsInput ): Promise { await requireRole([UserRole.ADMIN, UserRole.EDITOR]) try { const [settings] = await db .insert(formSettings) .values({ formName, notificationEmails: data.notificationEmails ?? null }) .onConflictDoUpdate({ target: formSettings.formName, set: { ...data, updatedAt: new Date().toISOString() } }) .returning() updateTag(formSettingsCacheTags.all) updateTag(formSettingsCacheTags.byName(formName)) return { success: true, settings: settings as FormSettingsData } } catch (error) { console.error(`Error upserting form settings for ${formName}:`, error) return { success: false, error: toActionError(error, 'Failed to save form settings') } } }