import type { APIRoute } from 'astro'; import { db } from '../../../db'; import { siteSettings } from '../../../db/schema'; import { eq } from 'drizzle-orm'; import { nanoid } from 'nanoid'; export const POST: APIRoute = async ({ request, locals, redirect }) => { const user = locals.user; if (!user || !user.isSiteAdmin) { return new Response('Unauthorized', { status: 403 }); } const formData = await request.formData(); const registrationEnabled = formData.get('registration_enabled') === 'on'; const existingSetting = await db.select() .from(siteSettings) .where(eq(siteSettings.key, 'registration_enabled')) .get(); if (existingSetting) { await db.update(siteSettings) .set({ value: registrationEnabled ? 'true' : 'false', updatedAt: new Date() }) .where(eq(siteSettings.key, 'registration_enabled')); } else { await db.insert(siteSettings).values({ id: nanoid(), key: 'registration_enabled', value: registrationEnabled ? 'true' : 'false', }); } return redirect('/admin'); };