import { env } from "@/env"; import { db } from "@/server/db"; import { users } from "@/server/db/schema"; import { verifyWebhook } from "@clerk/nextjs/webhooks"; import { eq } from "drizzle-orm"; export async function POST(req: Request) { try { const evt = await verifyWebhook(req, { signingSecret: env.CLERK_WEBHOOK_SIGNING_SECRET, }); const eventType = evt.type; switch (eventType) { case "user.created": await db.insert(users).values({ id: evt.data.id, name: evt.data.first_name ?? evt.data.last_name, image: evt.data.image_url, }); break; case "user.updated": await db .update(users) .set({ name: evt.data.first_name ?? evt.data.last_name, image: evt.data.image_url, }) .where(eq(users.id, evt.data.id)); break; case "user.deleted": await db.delete(users).where(eq(users.id, evt.data.id!)); break; default: console.log("Unknown event type:", eventType); break; } return new Response("Webhook received", { status: 200 }); } catch (err) { console.error("Error verifying webhook:", err); return new Response("Error verifying webhook", { status: 400 }); } }