diff --git a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts index 1b03da3b8..f3060f0e2 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/services/billing-subscription.service.ts @@ -106,7 +106,7 @@ export class BillingSubscriptionService { return billingSubscriptionItem; } - async deleteSubscription(workspaceId: string) { + async deleteSubscriptions(workspaceId: string) { const subscriptionToCancel = await this.getCurrentBillingSubscriptionOrThrow({ workspaceId, @@ -116,8 +116,8 @@ export class BillingSubscriptionService { await this.stripeSubscriptionService.cancelSubscription( subscriptionToCancel.stripeSubscriptionId, ); - await this.billingSubscriptionRepository.delete(subscriptionToCancel.id); } + await this.billingSubscriptionRepository.delete({ workspaceId }); } async handleUnpaidInvoices(data: Stripe.SetupIntentSucceededEvent.Data) { 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 ea20e8b98..194096f8b 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 @@ -184,7 +184,7 @@ export class WorkspaceService extends TypeOrmQueryService { await this.userWorkspaceRepository.delete({ workspaceId: id }); if (this.billingService.isBillingEnabled()) { - await this.billingSubscriptionService.deleteSubscription(workspace.id); + await this.billingSubscriptionService.deleteSubscriptions(workspace.id); } await this.workspaceManagerService.delete(id); 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 86ae4fa39..0b2c981ab 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 @@ -4,8 +4,10 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; +import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; 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 { RoleModule } from 'src/engine/metadata-modules/role/role.module'; import { UserRoleModule } from 'src/engine/metadata-modules/userRole/userRole.module'; import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; @@ -30,6 +32,10 @@ import { WorkspaceManagerService } from './workspace-manager.service'; TypeOrmModule.forFeature([UserWorkspace], 'core'), RoleModule, UserRoleModule, + TypeOrmModule.forFeature( + [FieldMetadataEntity, RelationMetadataEntity], + 'metadata', + ), ], exports: [WorkspaceManagerService], providers: [WorkspaceManagerService], 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 7927f55e9..29801bfba 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 @@ -7,12 +7,14 @@ import { Repository } from 'typeorm'; import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; +import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { PermissionsException, PermissionsExceptionCode, } from 'src/engine/metadata-modules/permissions/permissions.exception'; import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service'; +import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; import { UserRoleService } from 'src/engine/metadata-modules/userRole/userRole.service'; import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; @@ -36,6 +38,10 @@ export class WorkspaceManagerService { private readonly dataSourceService: DataSourceService, private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService, private readonly permissionsService: PermissionsService, + @InjectRepository(FieldMetadataEntity, 'metadata') + private readonly fieldMetadataRepository: Repository, + @InjectRepository(RelationMetadataEntity, 'metadata') + private readonly relationMetadataRepository: Repository, @InjectRepository(UserWorkspace, 'core') private readonly userWorkspaceRepository: Repository, private readonly roleService: RoleService, @@ -184,6 +190,13 @@ export class WorkspaceManagerService { */ public async delete(workspaceId: string): Promise { // Delete data from metadata tables + await this.relationMetadataRepository.delete({ + workspaceId, + }); + await this.fieldMetadataRepository.delete({ + workspaceId, + }); + await this.objectMetadataService.deleteObjectsMetadata(workspaceId); await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId); await this.dataSourceService.delete(workspaceId);