MBO-Tech-IT-Webseite/modules/06-website-cms/files/app/api/admin/kontakt/route.ts

37 lines
1.5 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { requireAdmin } from '@/lib/admin-auth'
import { createServiceClient } from '@/lib/supabase'
export async function GET() {
const check = await requireAdmin()
if (check instanceof NextResponse) return check
const db = createServiceClient()
const [{ data: info }, { data: zeiten }, { data: social }] = await Promise.all([
db.from('kontakt_info').select('*').limit(1).single(),
db.from('kontakt_oeffnungszeiten').select('*').order('reihenfolge'),
db.from('kontakt_social').select('*').order('reihenfolge'),
])
return NextResponse.json({ info: info ?? null, oeffnungszeiten: zeiten ?? [], social: social ?? [] })
}
export async function PATCH(req: NextRequest) {
const check = await requireAdmin()
if (check instanceof NextResponse) return check
const body = await req.json()
const db = createServiceClient()
const { data: existing } = await db.from('kontakt_info').select('id').limit(1).single()
const fields = {
telefon: body.telefon ?? '',
email: body.email ?? '',
adresse_zeile1: body.adresse_zeile1 ?? '',
adresse_zeile2: body.adresse_zeile2 ?? '',
formular_empfaenger: body.formular_empfaenger ?? '',
updated_at: new Date().toISOString(),
}
const { error } = existing
? await db.from('kontakt_info').update(fields).eq('id', existing.id)
: await db.from('kontakt_info').insert(fields)
if (error) return NextResponse.json({ error: error.message }, { status: 500 })
return NextResponse.json({ success: true })
}