From 97536376938029cc090ee2ee745636a8795de981 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Thu, 22 May 2025 12:22:21 +0200 Subject: [PATCH] Fix upgrade command (#12210) --- .../upgrade.command.ts | 55 +++++++------------ 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/upgrade.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/upgrade.command.ts index 7cc1d1f5a..372fe6800 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/upgrade.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/upgrade.command.ts @@ -69,20 +69,11 @@ export class DatabaseMigrationService { }); } - async shouldRunMigrationsIfAllWorkspaceAreAboveVersion0_53(): Promise { - const coreWorkspaceSchemaExists = await this.checkCoreWorkspaceExists(); + async shouldSkipUpgradeIfFreshInstallation(): Promise { + const activeWorkspaceOrSuspendedWorkspaceCount = + await this.loadActiveOrSuspendedWorkspace(); - if (!coreWorkspaceSchemaExists) { - this.logger.log( - 'core.workspace does not exist. Running migrations for fresh installation.', - ); - - return true; - } - - this.logger.log('Not a first installation, checking workspace versions...'); - - return await this.areAllWorkspacesAboveVersion0_53(); + return activeWorkspaceOrSuspendedWorkspaceCount.length === 0; } async runMigrations(): Promise { @@ -114,26 +105,7 @@ export class DatabaseMigrationService { } } - private async checkCoreWorkspaceExists(): Promise { - try { - const result = await this.workspaceRepository.query(` - SELECT EXISTS ( - SELECT 1 - FROM information_schema.tables - WHERE table_schema = 'core' - AND table_name = 'workspace' - ); - `); - - return result[0].exists; - } catch (error) { - this.logger.error('Error checking core.workspace existence:', error); - - return false; - } - } - - private async areAllWorkspacesAboveVersion0_53(): Promise { + public async areAllWorkspacesAboveVersion0_53(): Promise { try { const allActiveOrSuspendedWorkspaces = await this.loadActiveOrSuspendedWorkspace(); @@ -293,10 +265,21 @@ export class UpgradeCommand extends UpgradeCommandRunner { passedParams: string[], options: ActiveOrSuspendedWorkspacesMigrationCommandOptions, ): Promise { - const shouldRunMigrateAsPartOfUpgrade = - await this.databaseMigrationService.shouldRunMigrationsIfAllWorkspaceAreAboveVersion0_53(); + const shouldSkipUpgradeIfFreshInstallation = + await this.databaseMigrationService.shouldSkipUpgradeIfFreshInstallation(); - if (!shouldRunMigrateAsPartOfUpgrade) { + if (shouldSkipUpgradeIfFreshInstallation) { + this.logger.log( + chalk.blue('Fresh installation detected, skipping migration'), + ); + + return; + } + + const shouldPreventFromUpgradingIfWorkspaceIsBelowVersion0_53 = + !(await this.databaseMigrationService.areAllWorkspacesAboveVersion0_53()); + + if (shouldPreventFromUpgradingIfWorkspaceIsBelowVersion0_53) { this.logger.log( chalk.red( 'Not able to run migrate command, aborting the whole migrate-upgrade operation',