From a758154690e0a14b2318f21dca5beaf3ca441f7b Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Mon, 8 Sep 2025 16:46:31 +0200 Subject: [PATCH] Add clean workspace cron command (#14353) --- packages/twenty-server/src/command/command.module.ts | 2 +- .../database/commands/cron-register-all.command.ts | 12 ++++++++++++ .../src/database/commands/database-command.module.ts | 5 +++-- .../workspace-cleaner/workspace-cleaner.module.ts | 8 ++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/twenty-server/src/command/command.module.ts b/packages/twenty-server/src/command/command.module.ts index 6cd6fe2cec1..2b76ad76e79 100644 --- a/packages/twenty-server/src/command/command.module.ts +++ b/packages/twenty-server/src/command/command.module.ts @@ -15,12 +15,12 @@ import { MessagingMessageCleanerModule } from 'src/modules/messaging/message-cle AppModule, WorkspaceSyncMetadataCommandsModule, DatabaseCommandModule, - WorkspaceCleanerModule, WorkspaceHealthCommandModule, MessagingMessageCleanerModule, WorkspaceMigrationRunnerCommandsModule, ObjectMetadataModule, FieldMetadataModule, + WorkspaceCleanerModule, ], }) export class CommandModule {} diff --git a/packages/twenty-server/src/database/commands/cron-register-all.command.ts b/packages/twenty-server/src/database/commands/cron-register-all.command.ts index 16230780464..26548950600 100644 --- a/packages/twenty-server/src/database/commands/cron-register-all.command.ts +++ b/packages/twenty-server/src/database/commands/cron-register-all.command.ts @@ -5,6 +5,8 @@ import { Command, CommandRunner } from 'nest-commander'; import { CheckCustomDomainValidRecordsCronCommand } from 'src/engine/core-modules/domain-manager/crons/commands/check-custom-domain-valid-records.cron.command'; import { CleanupOrphanedFilesCronCommand } from 'src/engine/core-modules/file/crons/commands/cleanup-orphaned-files.cron.command'; import { CronTriggerCronCommand } from 'src/engine/metadata-modules/trigger/crons/commands/cron-trigger.cron.command'; +import { CleanOnboardingWorkspacesCronCommand } from 'src/engine/workspace-manager/workspace-cleaner/commands/clean-onboarding-workspaces.cron.command'; +import { CleanSuspendedWorkspacesCronCommand } from 'src/engine/workspace-manager/workspace-cleaner/commands/clean-suspended-workspaces.cron.command'; import { CalendarEventListFetchCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-event-list-fetch.cron.command'; import { CalendarEventsImportCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-import.cron.command'; import { CalendarOngoingStaleCronCommand } from 'src/modules/calendar/calendar-event-import-manager/crons/commands/calendar-ongoing-stale.cron.command'; @@ -38,6 +40,8 @@ export class CronRegisterAllCommand extends CommandRunner { private readonly workflowHandleStaledRunsCronCommand: WorkflowHandleStaledRunsCronCommand, private readonly workflowCleanWorkflowRunsCronCommand: WorkflowCleanWorkflowRunsCronCommand, private readonly cronTriggerCronCommand: CronTriggerCronCommand, + private readonly cleanSuspendedWorkspacesCronCommand: CleanSuspendedWorkspacesCronCommand, + private readonly cleanOnboardingWorkspacesCronCommand: CleanOnboardingWorkspacesCronCommand, ) { super(); } @@ -98,6 +102,14 @@ export class CronRegisterAllCommand extends CommandRunner { name: 'CronTrigger', command: this.cronTriggerCronCommand, }, + { + name: 'CleanSuspendedWorkspaces', + command: this.cleanSuspendedWorkspacesCronCommand, + }, + { + name: 'CleanOnboardingWorkspaces', + command: this.cleanOnboardingWorkspacesCronCommand, + }, ]; let successCount = 0; diff --git a/packages/twenty-server/src/database/commands/database-command.module.ts b/packages/twenty-server/src/database/commands/database-command.module.ts index 7c271d89ba4..f7110215179 100644 --- a/packages/twenty-server/src/database/commands/database-command.module.ts +++ b/packages/twenty-server/src/database/commands/database-command.module.ts @@ -2,6 +2,7 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { CronRegisterAllCommand } from 'src/database/commands/cron-register-all.command'; +import { DataSeedWorkspaceCommand } from 'src/database/commands/data-seed-dev-workspace.command'; import { ConfirmationQuestion } from 'src/database/commands/questions/confirmation.question'; import { UpgradeVersionCommandModule } from 'src/database/commands/upgrade-version-command/upgrade-version-command.module'; import { TypeORMModule } from 'src/database/typeorm/typeorm.module'; @@ -16,14 +17,13 @@ import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadat import { TriggerModule } from 'src/engine/metadata-modules/trigger/trigger.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { DevSeederModule } from 'src/engine/workspace-manager/dev-seeder/dev-seeder.module'; +import { WorkspaceCleanerModule } from 'src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module'; import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module'; import { CalendarEventImportManagerModule } from 'src/modules/calendar/calendar-event-import-manager/calendar-event-import-manager.module'; import { MessagingImportManagerModule } from 'src/modules/messaging/message-import-manager/messaging-import-manager.module'; import { WorkflowRunQueueModule } from 'src/modules/workflow/workflow-runner/workflow-run-queue/workflow-run-queue.module'; import { AutomatedTriggerModule } from 'src/modules/workflow/workflow-trigger/automated-trigger/automated-trigger.module'; -import { DataSeedWorkspaceCommand } from './data-seed-dev-workspace.command'; - @Module({ imports: [ UpgradeVersionCommandModule, @@ -46,6 +46,7 @@ import { DataSeedWorkspaceCommand } from './data-seed-dev-workspace.command'; ApiKeyModule, FeatureFlagModule, TriggerModule, + WorkspaceCleanerModule, ], providers: [ DataSeedWorkspaceCommand, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module.ts index 5b31586d791..3dcf7857333 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module.ts @@ -30,13 +30,17 @@ import { CleanerWorkspaceService } from 'src/engine/workspace-manager/workspace- ], providers: [ DeleteWorkspacesCommand, - CleanSuspendedWorkspacesCommand, DestroyWorkspaceCommand, CleanSuspendedWorkspacesCronCommand, + CleanSuspendedWorkspacesCommand, CleanOnboardingWorkspacesCommand, CleanOnboardingWorkspacesCronCommand, CleanerWorkspaceService, ], - exports: [CleanerWorkspaceService], + exports: [ + CleanerWorkspaceService, + CleanSuspendedWorkspacesCronCommand, + CleanOnboardingWorkspacesCronCommand, + ], }) export class WorkspaceCleanerModule {}