// Server action to manually sync current user to database "use server"; import { auth } from "@clerk/nextjs/server"; import { clerkClient } from "@clerk/nextjs/server"; import { prisma } from "@/lib/db/prisma"; export async function syncCurrentUser() { try { const { userId } = await auth(); if (!userId) { return { success: false, error: "Not authenticated" }; } // Get user details from Clerk const clerk = await clerkClient(); const user = await clerk.users.getUser(userId); // Create or update user in database await prisma.user.upsert({ where: { clerkId: userId }, create: { clerkId: userId, email: user.emailAddresses[0]?.emailAddress || "", firstName: user.firstName || null, lastName: user.lastName || null, imageUrl: user.imageUrl || null, }, update: { email: user.emailAddresses[0]?.emailAddress || "", firstName: user.firstName || null, lastName: user.lastName || null, imageUrl: user.imageUrl || null, }, }); return { success: true, message: `User ${user.emailAddresses[0]?.emailAddress} synced successfully!`, }; } catch (error) { console.error("Sync error:", error); return { success: false, error: error instanceof Error ? error.message : "Unknown error", }; } }