import { NextResponse } from "next/server";

import { acessoDaRota, respostaDeErro } from "@/lib/regras/servidor/acesso-da-rota";
import { alterarRegra, excluirRegra } from "@/lib/regras/servidor/servico";

/* Alterar (nome, gatilho, ações, ligada/desligada) e excluir uma regra. */

export async function PATCH(req: Request, ctx: { params: Promise<{ id: string }> }) {
  const { id } = await ctx.params;
  const r = await acessoDaRota();
  if ("erro" in r) return r.erro;
  const corpo = ((await req.json().catch(() => null)) ?? {}) as Record<string, unknown>;
  try {
    const regra = await alterarRegra(r.acesso, id, { nome: corpo.nome, gatilho: corpo.gatilho, acoes: corpo.acoes, ativa: corpo.ativa });
    return NextResponse.json({ ok: true, regra });
  } catch (erro) {
    return respostaDeErro(erro);
  }
}

export async function DELETE(_req: Request, ctx: { params: Promise<{ id: string }> }) {
  const { id } = await ctx.params;
  const r = await acessoDaRota();
  if ("erro" in r) return r.erro;
  try {
    const regra = await excluirRegra(r.acesso, id);
    return NextResponse.json({ ok: true, regra });
  } catch (erro) {
    return respostaDeErro(erro);
  }
}
