import { NextRequest, NextResponse } from "next/server"; import { addGroupBooking } from "@/lib/db"; import { checkRateLimit, getClientIp } from "@/lib/rateLimit"; import { sanitizeName, sanitizePhone, sanitizeHandle, sanitizeText } from "@/lib/validation"; export async function POST(request: NextRequest) { const ip = getClientIp(request); if (!checkRateLimit(ip, 5, 60_000)) { return NextResponse.json( { error: "Слишком много запросов. Попробуйте через минуту." }, { status: 429 } ); } try { const body = await request.json(); const { name, phone, groupInfo, instagram, telegram } = body; const cleanName = sanitizeName(name); if (!cleanName) { return NextResponse.json({ error: "Имя обязательно" }, { status: 400 }); } const cleanPhone = sanitizePhone(phone); if (!cleanPhone) { return NextResponse.json({ error: "Телефон обязателен" }, { status: 400 }); } const id = addGroupBooking( cleanName, cleanPhone, sanitizeText(groupInfo), sanitizeHandle(instagram), sanitizeHandle(telegram) ); return NextResponse.json({ ok: true, id }); } catch (err) { console.error("[group-booking] POST error:", err); return NextResponse.json({ error: "Internal error" }, { status: 500 }); } }