// Public REST: hotel guilds (guilds). AtomCMS JSON API parity — read-only, // paginated list ordered newest first (by id), exposing the basic public // fields. The owner is stored as the user_id column (accessor userId), surfaced // here as ownerId for API clarity. import { apiJson, pagination } from "@/lib/api"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; export async function GET(req: Request) { const sp = new URL(req.url).searchParams; const { page, perPage, skip, take } = pagination(sp); try { const [total, rows] = await Promise.all([ prisma.guilds.count(), prisma.guilds.findMany({ orderBy: { id: "desc" }, skip, take, select: { id: true, name: true, description: true, userId: true, }, }), ]); // Rename userId → ownerId for the public payload. const data = rows.map(({ userId, ...rest }) => ({ ...rest, ownerId: userId, })); return apiJson({ data, meta: { page, perPage, total, lastPage: Math.max(1, Math.ceil(total / perPage)), }, }); } catch { // DB unreachable — never 500; return an empty, well-formed payload. return apiJson( { data: [], meta: { page, perPage, total: 0, lastPage: 1 } }, { status: 200 }, ); } }