forked from BRETT/BRETT
Initial Commit
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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<number, { id: number, name: string }[]>()
|
||||
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) ?? [] }))
|
||||
})
|
||||
Reference in New Issue
Block a user