Harden machine deletion via Convex API

This commit is contained in:
Esdras Renan 2025-10-13 15:53:07 -03:00
parent 64e4e02a9a
commit 4d8b9a0e39

View file

@ -5,6 +5,7 @@ import { ConvexHttpClient } from "convex/browser"
import { assertAuthenticatedSession } from "@/lib/auth-server"
import { DEFAULT_TENANT_ID } from "@/lib/constants"
import { api } from "@/convex/_generated/api"
import type { Id } from "@/convex/_generated/dataModel"
import { prisma } from "@/lib/prisma"
export const runtime = "nodejs"
@ -42,16 +43,24 @@ export async function POST(request: Request) {
role: session.user.role.toUpperCase(),
})
const actorId = ensured?._id
const actorId = ensured?._id as Id<"users"> | undefined
if (!actorId) {
return NextResponse.json({ error: "Falha ao obter ID do usuário no Convex" }, { status: 500 })
return NextResponse.json({ error: "Falha ao identificar o administrador" }, { status: 500 })
}
const client = convex as unknown as { mutation: (name: string, args: unknown) => Promise<unknown> }
await client.mutation("machines:remove", {
machineId: parsed.data.machineId,
actorId,
})
try {
await convex.mutation(api.machines.remove, {
machineId: parsed.data.machineId as Id<"machines">,
actorId,
})
} catch (error) {
const message = error instanceof Error ? error.message : ""
if (message.includes("Máquina não encontrada")) {
return NextResponse.json({ error: "Máquina não encontrada" }, { status: 404 })
}
console.error("[machines.delete] Convex failure", error)
return NextResponse.json({ error: "Falha ao remover máquina no Convex" }, { status: 500 })
}
const machineEmail = `machine-${parsed.data.machineId}@machines.local`
await prisma.authUser.deleteMany({ where: { email: machineEmail } })