import { db } from "@/lib/db"; import { requireAdmin } from "@/lib/admin"; export const dynamic = "force-dynamic"; type AdminWithUser = { id: string; discordId: string; user: { name?: string | null; email?: string | null; discordUsername?: string | null; } | null; }; export async function GET() { const guard = await requireAdmin(); if (!guard.ok) return guard.response; const admins = await db.admin.findMany({ orderBy: { createdAt: "desc" }, include: { user: true }, }); const adminUsers = admins as AdminWithUser[]; return Response.json( adminUsers.map((admin) => ({ id: admin.id, discordId: admin.discordId, user: admin.user ? { name: admin.user.name, email: admin.user.email, discordUsername: admin.user.discordUsername, } : null, })) ); } export async function POST(request: Request) { const guard = await requireAdmin(); if (!guard.ok) return guard.response; const body = await request.json(); const discordId = body?.discordId?.toString().trim(); if (!discordId) { return Response.json({ error: "Discord ID required" }, { status: 400 }); } const user = await db.user.findUnique({ where: { discordId } }); if (!user) { return Response.json({ error: "User not found" }, { status: 404 }); } const admin = await db.admin.upsert({ where: { discordId }, update: {}, create: { discordId, userId: user.id }, }); return Response.json({ id: admin.id, discordId: admin.discordId, user: { name: user.name, email: user.email, discordUsername: user.discordUsername, }, }); }