// Public REST: a single guild (guilds) with its member count // (guilds_members). AtomCMS JSON API parity. Returns { error } (404) when the // id is unknown. The owner is the user_id column (accessor userId), surfaced // here as ownerId. import { apiJson } from "@/lib/api"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; export async function GET(_req: Request, { params }: { params: Promise<{ id: string }> }) { const { id } = await params; if (!/^\d+$/.test(id)) { return apiJson({ error: "Guild not found" }, { status: 404 }); } const guildId = Number(id); try { const guild = await prisma.guilds.findUnique({ where: { id: guildId }, select: { id: true, name: true, description: true, userId: true, roomId: true, badge: true, dateCreated: true, }, }); if (!guild) { return apiJson({ error: "Guild not found" }, { status: 404 }); } // Member count is a separate guarded query (no relation is modelled). let memberCount = 0; try { memberCount = await prisma.guildsMembers.count({ where: { guildId: guild.id }, }); } catch { memberCount = 0; } const { userId, ...rest } = guild; return apiJson({ data: { ...rest, ownerId: userId, memberCount } }); } catch { // DB unavailable — treat as not found rather than a 500. return apiJson({ error: "Guild not found" }, { status: 200 }); } }