core/apps/webapp/app/routes/api.v1.webhooks.$id.tsx
2025-07-15 22:02:41 +05:30

49 lines
1.3 KiB
TypeScript

import { type ActionFunctionArgs } from "@remix-run/server-runtime";
import { requireWorkpace } from "~/services/session.server";
import { redirect, json } from "@remix-run/node";
import { prisma } from "~/db.server";
export async function action({ request, params }: ActionFunctionArgs) {
const workspace = await requireWorkpace(request);
const webhookId = params.id;
if (!webhookId) {
return json({ error: "Webhook ID is required" }, { status: 400 });
}
// Verify webhook belongs to the workspace
const webhook = await prisma.webhookConfiguration.findFirst({
where: {
id: webhookId,
workspaceId: workspace.id,
},
});
if (!webhook) {
return json({ error: "Webhook not found" }, { status: 404 });
}
if (request.method === "POST") {
const formData = await request.formData();
const method = formData.get("_method") as string;
if (method === "DELETE") {
try {
await prisma.webhookConfiguration.delete({
where: {
id: webhookId,
},
});
return redirect("/settings/webhooks");
} catch (error) {
console.error("Error deleting webhook:", error);
return json({ error: "Failed to delete webhook" }, { status: 500 });
}
}
}
return json({ error: "Method not allowed" }, { status: 405 });
}