import { eq } from 'drizzle-orm' import { roles } from '../../../db/schema' import { SYSTEM_ROLES } from '../../../../shared/utils/permissions' export default defineEventHandler(async (event) => { await requirePermission(event, 'roles.manage') const id = Number(getRouterParam(event, 'id')) if (!Number.isInteger(id) || id <= 0) { throw createError({ statusCode: 400, statusMessage: 'Ungültige ID' }) } const db = useDb() const existing = await db.select({ name: roles.name }).from(roles).where(eq(roles.id, id)).limit(1) if (!existing[0]) { throw createError({ statusCode: 404, statusMessage: 'Rolle nicht gefunden' }) } if ((SYSTEM_ROLES as readonly string[]).includes(existing[0].name)) { throw createError({ statusCode: 400, statusMessage: `Die ${existing[0].name}-Rolle kann nicht gelöscht werden` }) } await db.delete(roles).where(eq(roles.id, id)) return { ok: true } })