import { asc, eq } from 'drizzle-orm' import { roles, userRoles, users } from '../../db/schema' export default defineEventHandler(async (event) => { await requirePermission(event, 'admin.access') const db = useDb() const allUsers = await db .select({ id: users.id, name: users.name, email: users.email, createdAt: users.createdAt }) .from(users) .orderBy(asc(users.name)) const roleRows = await db .select({ userId: userRoles.userId, roleId: roles.id, name: roles.name }) .from(userRoles) .innerJoin(roles, eq(userRoles.roleId, roles.id)) const byUser = new Map() for (const row of roleRows) { const list = byUser.get(row.userId) ?? [] list.push({ id: row.roleId, name: row.name }) byUser.set(row.userId, list) } return allUsers.map(u => ({ ...u, roles: byUser.get(u.id) ?? [] })) })