Delete related userWorkspaceRole and role when deleting workspace (#10707)
Closes https://github.com/twentyhq/core-team-issues/issues/537
This commit is contained in:
@ -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 { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
|
||||||
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
|
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
|
||||||
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
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 { 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 { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service';
|
||||||
import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
|
import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
|
||||||
import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service';
|
import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service';
|
||||||
@ -30,6 +32,8 @@ describe('WorkspaceManagerService', () => {
|
|||||||
let workspaceRelationMetadataRepository: Repository<RelationMetadataEntity>;
|
let workspaceRelationMetadataRepository: Repository<RelationMetadataEntity>;
|
||||||
let workspaceFieldMetadataRepository: Repository<FieldMetadataEntity>;
|
let workspaceFieldMetadataRepository: Repository<FieldMetadataEntity>;
|
||||||
let workspaceDataSourceService: WorkspaceDataSourceService;
|
let workspaceDataSourceService: WorkspaceDataSourceService;
|
||||||
|
let userWorkspaceRoleRepository: Repository<UserWorkspaceRoleEntity>;
|
||||||
|
let roleRepository: Repository<RoleEntity>;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
const module: TestingModule = await Test.createTestingModule({
|
const module: TestingModule = await Test.createTestingModule({
|
||||||
@ -75,6 +79,18 @@ describe('WorkspaceManagerService', () => {
|
|||||||
delete: jest.fn(),
|
delete: jest.fn(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
provide: getRepositoryToken(UserWorkspaceRoleEntity, 'metadata'),
|
||||||
|
useValue: {
|
||||||
|
delete: jest.fn(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: getRepositoryToken(RoleEntity, 'metadata'),
|
||||||
|
useValue: {
|
||||||
|
delete: jest.fn(),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
provide: PermissionsService,
|
provide: PermissionsService,
|
||||||
useValue: {},
|
useValue: {},
|
||||||
@ -133,6 +149,12 @@ describe('WorkspaceManagerService', () => {
|
|||||||
workspaceDataSourceService = module.get<WorkspaceDataSourceService>(
|
workspaceDataSourceService = module.get<WorkspaceDataSourceService>(
|
||||||
WorkspaceDataSourceService,
|
WorkspaceDataSourceService,
|
||||||
);
|
);
|
||||||
|
userWorkspaceRoleRepository = module.get<
|
||||||
|
Repository<UserWorkspaceRoleEntity>
|
||||||
|
>(getRepositoryToken(UserWorkspaceRoleEntity, 'metadata'));
|
||||||
|
roleRepository = module.get<Repository<RoleEntity>>(
|
||||||
|
getRepositoryToken(RoleEntity, 'metadata'),
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be defined', () => {
|
it('should be defined', () => {
|
||||||
@ -155,6 +177,12 @@ describe('WorkspaceManagerService', () => {
|
|||||||
expect(dataSourceRepository.delete).toHaveBeenCalledWith({
|
expect(dataSourceRepository.delete).toHaveBeenCalledWith({
|
||||||
workspaceId: 'workspace-id',
|
workspaceId: 'workspace-id',
|
||||||
});
|
});
|
||||||
|
expect(userWorkspaceRoleRepository.delete).toHaveBeenCalledWith({
|
||||||
|
workspaceId: 'workspace-id',
|
||||||
|
});
|
||||||
|
expect(roleRepository.delete).toHaveBeenCalledWith({
|
||||||
|
workspaceId: 'workspace-id',
|
||||||
|
});
|
||||||
expect(
|
expect(
|
||||||
workspaceDataSourceService.deleteWorkspaceDBSchema,
|
workspaceDataSourceService.deleteWorkspaceDBSchema,
|
||||||
).toHaveBeenCalled();
|
).toHaveBeenCalled();
|
||||||
|
|||||||
@ -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 { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module';
|
||||||
import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module';
|
import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module';
|
||||||
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
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 { 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 { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module';
|
||||||
import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module';
|
import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module';
|
||||||
import { SeederModule } from 'src/engine/seeder/seeder.module';
|
import { SeederModule } from 'src/engine/seeder/seeder.module';
|
||||||
@ -34,7 +36,12 @@ import { WorkspaceManagerService } from './workspace-manager.service';
|
|||||||
RoleModule,
|
RoleModule,
|
||||||
UserRoleModule,
|
UserRoleModule,
|
||||||
TypeOrmModule.forFeature(
|
TypeOrmModule.forFeature(
|
||||||
[FieldMetadataEntity, RelationMetadataEntity],
|
[
|
||||||
|
FieldMetadataEntity,
|
||||||
|
RelationMetadataEntity,
|
||||||
|
UserWorkspaceRoleEntity,
|
||||||
|
RoleEntity,
|
||||||
|
],
|
||||||
'metadata',
|
'metadata',
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@ -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 { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
|
||||||
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
|
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
|
||||||
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
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 { 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 { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service';
|
||||||
import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.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';
|
import { PETS_DATA_SEEDS } from 'src/engine/seeder/data-seeds/pets-data-seeds';
|
||||||
@ -54,6 +56,10 @@ export class WorkspaceManagerService {
|
|||||||
private readonly featureFlagService: FeatureFlagService,
|
private readonly featureFlagService: FeatureFlagService,
|
||||||
@InjectRepository(Workspace, 'core')
|
@InjectRepository(Workspace, 'core')
|
||||||
private readonly workspaceRepository: Repository<Workspace>,
|
private readonly workspaceRepository: Repository<Workspace>,
|
||||||
|
@InjectRepository(UserWorkspaceRoleEntity, 'metadata')
|
||||||
|
private readonly userWorkspaceRoleRepository: Repository<UserWorkspaceRoleEntity>,
|
||||||
|
@InjectRepository(RoleEntity, 'metadata')
|
||||||
|
private readonly roleRepository: Repository<RoleEntity>,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -255,6 +261,12 @@ export class WorkspaceManagerService {
|
|||||||
await this.fieldMetadataRepository.delete({
|
await this.fieldMetadataRepository.delete({
|
||||||
workspaceId,
|
workspaceId,
|
||||||
});
|
});
|
||||||
|
await this.userWorkspaceRoleRepository.delete({
|
||||||
|
workspaceId,
|
||||||
|
});
|
||||||
|
await this.roleRepository.delete({
|
||||||
|
workspaceId,
|
||||||
|
});
|
||||||
|
|
||||||
await this.objectMetadataService.deleteObjectsMetadata(workspaceId);
|
await this.objectMetadataService.deleteObjectsMetadata(workspaceId);
|
||||||
await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId);
|
await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId);
|
||||||
|
|||||||
Reference in New Issue
Block a user