import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/db";

import { getIP, rateLimit } from "@/lib/rate-limit";

export async function POST(req: NextRequest) {
    const ip = getIP(req);
    if (!rateLimit(ip, 3)) {
        return NextResponse.json({ error: "Trop de tentatives. Veuillez patienter." }, { status: 429 });
    }

    try {
        const { email } = await req.json();

        if (!email || !email.includes("@")) {
            return NextResponse.json({ error: "Email invalide" }, { status: 400 });
        }

        // Vérifier si déjà abonné
        const existing = await (prisma as any).subscriber.findUnique({
            where: { email }
        });

        if (existing) {
            return NextResponse.json({ message: "Déjà inscrit !" }, { status: 200 });
        }

        await (prisma as any).subscriber.create({
            data: { email }
        });

        return NextResponse.json({ message: "Inscription réussie !" }, { status: 201 });
    } catch (error) {
        console.error("Newsletter Error:", error);
        return NextResponse.json({ error: "Erreur lors de l'inscription" }, { status: 500 });
    }
}
