import { json, error } from '@sveltejs/kit'; import { getDb, row, toArr } from '$lib/server/db'; import { requireAuth } from '$lib/server/auth'; export async function GET({ request, params }) { const u = await requireAuth(request); const db = getDb(); const termin = db.prepare( 'SELECT * FROM termine WHERE id = ? AND verein_id = ?' ).get(params.id, u.verein_id); if (!termin) throw error(404, 'Termin nicht gefunden'); return json(row(termin as Record)); } export async function PUT({ request, params }) { const u = await requireAuth(request); const db = getDb(); const existing = db.prepare( 'SELECT id FROM termine WHERE id = ? AND verein_id = ?' ).get(params.id, u.verein_id); if (!existing) throw error(404, 'Termin nicht gefunden'); const body = await request.json(); db.prepare(` UPDATE termine SET titel = ?, beschreibung = ?, beginn = ?, ende = ?, ort = ?, ort_id = ?, gruppe_ids = ?, durchfuehrender_id = ?, verfuegbarkeit = ?, rrule = ?, serie_id = ?, updated = strftime('%Y-%m-%dT%H:%M:%SZ','now') WHERE id = ? AND verein_id = ? `).run( body.titel, body.beschreibung ?? null, body.beginn, body.ende ?? null, body.ort ?? null, body.ort_id ?? null, toArr(body.gruppe_ids), body.durchfuehrender_id ?? null, body.verfuegbarkeit ?? 'offen', body.rrule ?? null, body.serie_id ?? null, params.id, u.verein_id ); const termin = db.prepare('SELECT * FROM termine WHERE id = ?').get(params.id); return json(row(termin as Record)); } export async function DELETE({ request, params, url }) { const u = await requireAuth(request); const db = getDb(); const deleteSerie = url.searchParams.get('serie') === 'true'; if (deleteSerie) { const termin = db.prepare( 'SELECT serie_id FROM termine WHERE id = ? AND verein_id = ?' ).get(params.id, u.verein_id) as { serie_id: string | null } | undefined; if (!termin) throw error(404, 'Termin nicht gefunden'); if (termin.serie_id) { db.prepare( 'DELETE FROM termine WHERE serie_id = ? AND verein_id = ?' ).run(termin.serie_id, u.verein_id); } else { db.prepare( 'DELETE FROM termine WHERE id = ? AND verein_id = ?' ).run(params.id, u.verein_id); } } else { const result = db.prepare( 'DELETE FROM termine WHERE id = ? AND verein_id = ?' ).run(params.id, u.verein_id); if (result.changes === 0) throw error(404, 'Termin nicht gefunden'); } return new Response(null, { status: 204 }); }