37 lines
1.5 KiB
TypeScript
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 })
|
|
}
|