From 2be26ecc987903e12ed69296416bf09544b71bc8 Mon Sep 17 00:00:00 2001 From: Etienne <45695613+etiennejouan@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:13:01 +0100 Subject: [PATCH] add temporary log to investigate on deletion logic (#10955) related to [611](https://github.com/twentyhq/core-team-issues/issues/611) --- .../workspace/services/workspace.service.ts | 13 ++++++++++++- .../workspace-manager.service.ts | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts index 153f04d89..f96e6f553 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts @@ -1,4 +1,4 @@ -import { BadRequestException, Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import assert from 'assert'; @@ -49,6 +49,7 @@ import { extractVersionMajorMinorPatch } from 'src/utils/version/extract-version // eslint-disable-next-line @nx/workspace-inject-workspace-repository export class WorkspaceService extends TypeOrmQueryService { private readonly featureLookUpKey = BillingEntitlementKey.CUSTOM_DOMAIN; + protected readonly logger = new Logger(WorkspaceService.name); constructor( @InjectRepository(Workspace, 'core') @@ -298,6 +299,12 @@ export class WorkspaceService extends TypeOrmQueryService { } async deleteWorkspace(id: string, softDelete = false) { + //TODO: delete all logs when #611 closed + + this.logger.log( + `${softDelete ? 'Soft' : 'Hard'} deleting workspace ${id} ...`, + ); + const workspace = await this.workspaceRepository.findOne({ where: { id }, withDeleted: true, @@ -328,6 +335,8 @@ export class WorkspaceService extends TypeOrmQueryService { if (softDelete) { await this.workspaceRepository.softDelete({ id }); + this.logger.log(`workspace ${id} soft deleted`); + return workspace; } @@ -339,6 +348,8 @@ export class WorkspaceService extends TypeOrmQueryService { ); await this.workspaceRepository.delete(id); + this.logger.log(`workspace ${id} hard deleted`); + return workspace; } 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 98fd7ebc7..5ba9a46af 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 @@ -254,25 +254,41 @@ export class WorkspaceManagerService { * @param workspaceId */ public async delete(workspaceId: string): Promise { + //TODO: delete all logs when #611 closed + this.logger.log(`Deleting workspace ${workspaceId} ...`); + // Delete data from metadata tables await this.relationMetadataRepository.delete({ workspaceId, }); + this.logger.log(`workspace ${workspaceId} relation metadata deleted`); + await this.fieldMetadataRepository.delete({ workspaceId, }); + this.logger.log(`workspace ${workspaceId} field metadata deleted`); + await this.userWorkspaceRoleRepository.delete({ workspaceId, }); + this.logger.log(`workspace ${workspaceId} user workspace role deleted`); + await this.roleRepository.delete({ workspaceId, }); + this.logger.log(`workspace ${workspaceId} role deleted`); await this.objectMetadataService.deleteObjectsMetadata(workspaceId); + this.logger.log(`workspace ${workspaceId} object metadata deleted`); + await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId); + this.logger.log(`workspace ${workspaceId} migration deleted`); + await this.dataSourceService.delete(workspaceId); + this.logger.log(`workspace ${workspaceId} data source deleted`); // Delete schema await this.workspaceDataSourceService.deleteWorkspaceDBSchema(workspaceId); + this.logger.log(`workspace ${workspaceId} schema deleted`); } private async initPermissions({