@@ -508,58 +508,73 @@ export class TeamService {
508508 await TeamService . cleanupTempOrgRedirect ( user , team ) ;
509509 const newUsername = generateNewUsername ( user ) ;
510510
511- await prisma . $transaction ( [
512- // Remove user from all sub-teams event type hosts
513- prisma . host . deleteMany ( {
514- where : {
515- userId : membership . userId ,
516- eventType : {
517- team : {
518- parentId : team . id ,
511+ const subTeamIds = await prisma . team . findMany ( {
512+ where : {
513+ parentId : team . id ,
514+ } ,
515+ select : {
516+ id : true ,
517+ } ,
518+ } ) ;
519+ const subTeamIdArray = subTeamIds . map ( ( t ) => t . id ) ;
520+
521+ await prisma . $transaction ( async ( tx ) => {
522+ if ( subTeamIdArray . length > 0 ) {
523+ // Remove user from all sub-teams event type hosts
524+ await tx . host . deleteMany ( {
525+ where : {
526+ userId : membership . userId ,
527+ eventType : {
528+ teamId : {
529+ in : subTeamIdArray ,
530+ } ,
519531 } ,
520532 } ,
521- } ,
522- } ) ,
523- // Delete managed child events in sub-teams
524- prisma . eventType . deleteMany ( {
525- where : {
526- userId : membership . userId ,
527- parent : {
528- team : {
529- parentId : team . id ,
533+ } ) ;
534+ // Delete managed child events in sub-teams
535+ await tx . eventType . deleteMany ( {
536+ where : {
537+ userId : membership . userId ,
538+ parent : {
539+ teamId : {
540+ in : subTeamIdArray ,
541+ } ,
530542 } ,
531543 } ,
532- } ,
533- } ) ,
544+ } ) ;
545+ // Delete all sub-team memberships where this team is the organization
546+ await tx . membership . deleteMany ( {
547+ where : {
548+ teamId : {
549+ in : subTeamIdArray ,
550+ } ,
551+ userId : membership . userId ,
552+ } ,
553+ } ) ;
554+ }
555+
534556 // Remove organizationId from the user
535- prisma . user . update ( {
557+ await tx . user . update ( {
536558 where : { id : membership . userId } ,
537559 data : {
538560 organizationId : null ,
539561 username : newUsername ,
540562 } ,
541- } ) ,
563+ } ) ;
542564 // Delete the profile of the user from the organization
543- ProfileRepository . delete ( {
544- userId : membership . userId ,
545- organizationId : team . id ,
546- } ) ,
547- // Delete all sub-team memberships where this team is the organization
548- prisma . membership . deleteMany ( {
565+ await tx . profile . deleteMany ( {
549566 where : {
550- team : {
551- parentId : team . id ,
552- } ,
553567 userId : membership . userId ,
568+ organizationId : team . id ,
554569 } ,
555- } ) ,
570+ } ) ;
556571 // Delete the membership of the user from the organization
557- prisma . membership . delete ( {
572+ await tx . membership . delete ( {
558573 where : {
559574 userId_teamId : { userId : membership . userId , teamId : team . id } ,
560575 } ,
561- } ) ,
562- ] ) ;
576+ } ) ;
577+ } ) ;
563578
564579 // Generate new username for user leaving organization
565580 function generateNewUsername ( user : UserWithTeams ) : string | null {
0 commit comments