import { eq } from 'drizzle-orm' import { roles, userRoles } from '../db/schema' export async function getUserRoles(userId: number) { const rows = await useDb() .select({ name: roles.name }) .from(userRoles) .innerJoin(roles, eq(userRoles.roleId, roles.id)) .where(eq(userRoles.userId, userId)) return rows.map(r => r.name) } export async function ensureRole(name: string) { const db = useDb() const existing = await db.select({ id: roles.id }).from(roles).where(eq(roles.name, name)).limit(1) if (existing[0]) return existing[0].id const [result] = await db.insert(roles).values({ name }) return Number(result.insertId) } export async function assignRole(userId: number, roleId: number) { try { await useDb().insert(userRoles).values({ userId, roleId }) } catch (err) { if ((err as { errno?: number }).errno !== 1062) throw err } }