import { NextRequest, NextResponse } from "next/server";
import { getCurrentUser } from "@/lib/auth";
import { queryRaw, prisma } from "@/lib/db";

export async function PATCH(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
  const user = await getCurrentUser(req);
  if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 403 });

  const { id } = await params;
  const body = await req.json();

  const existing = await queryRaw<{ id: number }>(
    `SELECT id FROM rules WHERE id = $1 AND owner_id = $2`,
    [Number(id), user.id]
  );
  if (!existing.length) return NextResponse.json({ error: "Not found" }, { status: 404 });

  const updated = await prisma.rules.update({
    where: { id: Number(id) },
    data: {
      ...(body.name !== undefined && { name: body.name }),
      ...(body.conditions !== undefined && { conditions: body.conditions }),
      ...(body.actions !== undefined && { actions: body.actions }),
      ...(body.enabled !== undefined && { enabled: body.enabled }),
      ...(body.manual_only !== undefined && { manual_only: body.manual_only }),
      ...(body.priority !== undefined && { priority: body.priority }),
    },
  });
  return NextResponse.json(updated);
}

export async function DELETE(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
  const user = await getCurrentUser(req);
  if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 403 });

  const { id } = await params;
  const existing = await queryRaw<{ id: number }>(
    `SELECT id FROM rules WHERE id = $1 AND owner_id = $2`,
    [Number(id), user.id]
  );
  if (!existing.length) return NextResponse.json({ error: "Not found" }, { status: 404 });

  await prisma.rules.delete({ where: { id: Number(id) } });
  return NextResponse.json({ ok: true });
}
