"use server"; import { prisma } from "../lib/prisma"; import { revalidatePath } from "next/cache"; // --- 1. ADD USER --- export async function addUser(data: { name: string; email: string; pass: string; }) { try { const newUser = await prisma.user.create({ data: { name: data.name, email: data.email, password: data.pass, }, }); // Refresh the page cache to display the new user immediately revalidatePath("/users"); return { success: true, user: newUser }; } catch (error) { console.error("Failed to add user:", error); return { success: false, error: "Failed to create user. Email may already exist.", }; } } // --- 2. EDIT USER --- export async function editUser( id: number, data: { name?: string; email?: string; pass?: string }, ) { try { const updatedUser = await prisma.user.update({ where: { id }, data: { ...(data.name && { name: data.name }), ...(data.email && { email: data.email }), ...(data.pass && { password: data.pass }), }, }); revalidatePath("/users"); return { success: true, user: updatedUser }; } catch (error) { console.error("Failed to update user:", error); return { success: false, error: "Failed to update user." }; } } // --- 3. REMOVE USER --- export async function removeUser(id: number) { try { const deletedUser = await prisma.user.delete({ where: { id }, }); revalidatePath("/users"); return { success: true, user: deletedUser }; } catch (error) { console.error("Failed to remove user:", error); return { success: false, error: "Failed to remove user." }; } } // --- 4. GET ALL USERS (Helper to render the list) --- export async function getUsers() { return await prisma.user.findMany({ orderBy: { id: "desc" }, }); }