Fix rooms list crash and rebuild CMS settings UI.

Rooms queried the wrong Prisma model and a non-existent owner relation. Settings now use grouped managed fields plus a searchable advanced key/value panel.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-15 21:02:57 +02:00
1 parent c186f51ae0
commit e101ea474e
6 files changed
+796 -104

No files matched your search

+27 -13
View File
@@ -6,27 +6,41 @@ export default async function RoomsPage({
params: paramsPromise,
searchParams,
}: {
params: Promise<{ locale: string }>;
params: Promise<{ locale?: string }>;
searchParams: Promise<Record<string, string>>;
}) {
const result = await fetchAdminList(
{
permission: PERMS.ROOMS_VIEW,
model: "room",
searchFields: ["name", "owner.username"],
include: { owner: { select: { username: true } } },
// Prisma model is `Rooms` → client accessor `rooms`.
// Owner is denormalized on the row (ownerId / ownerName), not a relation.
model: "rooms",
searchFields: ["name", "ownerName"],
select: {
id: true,
name: true,
ownerId: true,
ownerName: true,
state: true,
users: true,
usersMax: true,
description: true,
},
filterMap: {
filter_state: (v) => ({ state: v }),
},
mapRow: (r) => ({
id: r.id,
name: r.name,
ownerName: r.owner.username,
ownerId: r.owner?.id ?? 0,
state: r.state,
users: r.users,
usersMax: r.usersMax,
description: r.description,
id: r.id as number,
name: r.name as string,
ownerName: (r.ownerName as string) || "—",
ownerId: (r.ownerId as number) ?? 0,
state: r.state as string,
users: r.users as number,
usersMax: r.usersMax as number,
description: (r.description as string) || "",
}),
},
paramsPromise,
paramsPromise as Promise<{ locale: string }>,
searchParams,
);