forked from BRETT/BRETT
19 lines
601 B
TypeScript
19 lines
601 B
TypeScript
import { asc, count, eq } from 'drizzle-orm'
|
|
import { roles, userRoles } from '../../db/schema'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
await requirePermission(event, 'admin.access')
|
|
const roleList = await useDb()
|
|
.select({
|
|
id: roles.id,
|
|
name: roles.name,
|
|
memberCount: count(userRoles.userId),
|
|
})
|
|
.from(roles)
|
|
.leftJoin(userRoles, eq(userRoles.roleId, roles.id))
|
|
.groupBy(roles.id)
|
|
.orderBy(asc(roles.name))
|
|
const permsByRole = await getRolePermissions()
|
|
return roleList.map(r => ({ ...r, permissions: permsByRole.get(r.id) ?? [] }))
|
|
})
|