diff --git a/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts b/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts index 083d73e51..75a960185 100644 --- a/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts @@ -13,7 +13,9 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service'; import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; +import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; +import { UserWorkspaceRoleEntity } from 'src/engine/metadata-modules/role/user-workspace-role.entity'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; @@ -30,6 +32,8 @@ describe('WorkspaceManagerService', () => { let workspaceRelationMetadataRepository: Repository; let workspaceFieldMetadataRepository: Repository; let workspaceDataSourceService: WorkspaceDataSourceService; + let userWorkspaceRoleRepository: Repository; + let roleRepository: Repository; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ @@ -75,6 +79,18 @@ describe('WorkspaceManagerService', () => { delete: jest.fn(), }, }, + { + provide: getRepositoryToken(UserWorkspaceRoleEntity, 'metadata'), + useValue: { + delete: jest.fn(), + }, + }, + { + provide: getRepositoryToken(RoleEntity, 'metadata'), + useValue: { + delete: jest.fn(), + }, + }, { provide: PermissionsService, useValue: {}, @@ -133,6 +149,12 @@ describe('WorkspaceManagerService', () => { workspaceDataSourceService = module.get( WorkspaceDataSourceService, ); + userWorkspaceRoleRepository = module.get< + Repository + >(getRepositoryToken(UserWorkspaceRoleEntity, 'metadata')); + roleRepository = module.get>( + getRepositoryToken(RoleEntity, 'metadata'), + ); }); it('should be defined', () => { @@ -155,6 +177,12 @@ describe('WorkspaceManagerService', () => { expect(dataSourceRepository.delete).toHaveBeenCalledWith({ workspaceId: 'workspace-id', }); + expect(userWorkspaceRoleRepository.delete).toHaveBeenCalledWith({ + workspaceId: 'workspace-id', + }); + expect(roleRepository.delete).toHaveBeenCalledWith({ + workspaceId: 'workspace-id', + }); expect( workspaceDataSourceService.deleteWorkspaceDBSchema, ).toHaveBeenCalled(); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts index ff4419cc0..5794f4370 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts @@ -9,7 +9,9 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/ import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; +import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RoleModule } from 'src/engine/metadata-modules/role/role.module'; +import { UserWorkspaceRoleEntity } from 'src/engine/metadata-modules/role/user-workspace-role.entity'; import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; import { SeederModule } from 'src/engine/seeder/seeder.module'; @@ -34,7 +36,12 @@ import { WorkspaceManagerService } from './workspace-manager.service'; RoleModule, UserRoleModule, TypeOrmModule.forFeature( - [FieldMetadataEntity, RelationMetadataEntity], + [ + FieldMetadataEntity, + RelationMetadataEntity, + UserWorkspaceRoleEntity, + RoleEntity, + ], 'metadata', ), ], diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts index 280dfda88..98fd7ebc7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts @@ -18,7 +18,9 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/ import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service'; import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; +import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; +import { UserWorkspaceRoleEntity } from 'src/engine/metadata-modules/role/user-workspace-role.entity'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; import { PETS_DATA_SEEDS } from 'src/engine/seeder/data-seeds/pets-data-seeds'; @@ -54,6 +56,10 @@ export class WorkspaceManagerService { private readonly featureFlagService: FeatureFlagService, @InjectRepository(Workspace, 'core') private readonly workspaceRepository: Repository, + @InjectRepository(UserWorkspaceRoleEntity, 'metadata') + private readonly userWorkspaceRoleRepository: Repository, + @InjectRepository(RoleEntity, 'metadata') + private readonly roleRepository: Repository, ) {} /** @@ -255,6 +261,12 @@ export class WorkspaceManagerService { await this.fieldMetadataRepository.delete({ workspaceId, }); + await this.userWorkspaceRoleRepository.delete({ + workspaceId, + }); + await this.roleRepository.delete({ + workspaceId, + }); await this.objectMetadataService.deleteObjectsMetadata(workspaceId); await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId);