import type { EntityData } from '@mikro-orm/core' import type { EntityManager } from '@mikro-orm/postgresql' import { SsoIdentity, SsoRoleGrant, SsoUserDeactivation } from '../data/entities' export const metadata = { event: 'auth.user.deleted', persistent: true, id: 'sso:user-deleted-cleanup', } type UserDeletedPayload = { userId: string tenantId: string organizationId: string } type ResolverContext = { resolve: (name: string) => T } export default async function handle(payload: UserDeletedPayload, ctx: ResolverContext) { const em = ctx.resolve('em') await em.transactional(async (txEm) => { await txEm.nativeUpdate( SsoIdentity, { userId: payload.userId, deletedAt: null }, { deletedAt: new Date() } as EntityData, ) await txEm.nativeDelete(SsoRoleGrant, { userId: payload.userId }) await txEm.nativeDelete(SsoUserDeactivation, { userId: payload.userId }) }) }