Files
Nele-Till-Hochzeit/src/app/api/admin/settings/route.ts
T

50 lines
1.4 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/db';
import { requireAuth } from '@/lib/auth/session';
async function getSettings() {
let settings = await prisma.appSettings.findFirst();
if (!settings) {
settings = await prisma.appSettings.create({
data: { votingOpen: true }
});
}
return settings;
}
export async function GET(request: NextRequest) {
const authError = await requireAuth(request);
if (authError) return authError;
try {
const settings = await getSettings();
return NextResponse.json(settings);
} catch (error) {
console.error('Error getting settings:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}
export async function PATCH(request: NextRequest) {
const authError = await requireAuth(request);
if (authError) return authError;
try {
const { votingOpen, directoryOrder } = await request.json();
const settings = await getSettings();
const updated = await prisma.appSettings.update({
where: { id: settings.id },
data: {
...(votingOpen !== undefined && { votingOpen }),
...(directoryOrder !== undefined && { directoryOrder }),
}
});
return NextResponse.json(updated);
} catch (error) {
console.error('Error updating settings:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}