From 6736ca784b1a99ef82a1e43748623a77792dc2f3 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 26 Sep 2024 15:00:47 +0200 Subject: [PATCH] Update clean view command + add dry run to favorite backfill (#7268) Clean favorites associated with activities --- ...31-backfill-workspace-favorites.command.ts | 24 ++++++++++++++----- ...sociated-with-outdated-objects.command.ts} | 12 ++++++---- .../0-31/0-31-upgrade-version.command.ts | 6 ++--- .../0-31/0-31-upgrade-version.module.ts | 4 ++-- 4 files changed, 31 insertions(+), 15 deletions(-) rename packages/twenty-server/src/database/commands/upgrade-version/0-31/{0-31-clean-views-with-deleted-object-metadata.command.ts => 0-31-clean-views-associated-with-outdated-objects.command.ts} (86%) diff --git a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command.ts b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command.ts index ed94537b0..90c415123 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command.ts @@ -51,6 +51,7 @@ export class BackfillWorkspaceFavoritesCommand extends ActiveWorkspacesCommandRu await this.createViewWorkspaceFavorites( workspaceId, activeWorkspaceIndexViews.map((view) => view.id), + _options.dryRun ?? false, ); this.logger.log( @@ -117,6 +118,7 @@ export class BackfillWorkspaceFavoritesCommand extends ActiveWorkspacesCommandRu private async createViewWorkspaceFavorites( workspaceId: string, viewIds: string[], + dryRun: boolean, ) { const favoriteRepository = await this.twentyORMGlobalManager.getRepositoryForWorkspace( @@ -125,6 +127,7 @@ export class BackfillWorkspaceFavoritesCommand extends ActiveWorkspacesCommandRu ); let nextFavoritePosition = await favoriteRepository.count(); + let createdFavorites = 0; for (const viewId of viewIds) { const existingFavorites = await favoriteRepository.find({ @@ -137,14 +140,23 @@ export class BackfillWorkspaceFavoritesCommand extends ActiveWorkspacesCommandRu continue; } - await favoriteRepository.insert( - favoriteRepository.create({ - viewId, - position: nextFavoritePosition, - }), - ); + if (!dryRun) { + await favoriteRepository.insert( + favoriteRepository.create({ + viewId, + position: nextFavoritePosition, + }), + ); + } + createdFavorites++; nextFavoritePosition++; } + + this.logger.log( + chalk.green( + `Found ${createdFavorites} favorites to backfill in workspace ${workspaceId}.`, + ), + ); } } diff --git a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-with-deleted-object-metadata.command.ts b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-associated-with-outdated-objects.command.ts similarity index 86% rename from packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-with-deleted-object-metadata.command.ts rename to packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-associated-with-outdated-objects.command.ts index 727d2a864..6643f6842 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-with-deleted-object-metadata.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-clean-views-associated-with-outdated-objects.command.ts @@ -11,13 +11,15 @@ import { import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; +import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; @Command({ - name: 'upgrade-0.31:clean-views-with-deleted-object-metadata', - description: 'Clean views with deleted object metadata', + name: 'upgrade-0.31:clean-views-associated-with-outdated-objects', + description: + 'Clean views associated with deleted object metadata or activities', }) -export class CleanViewsWithDeletedObjectMetadataCommand extends ActiveWorkspacesCommandRunner { +export class CleanViewsAssociatedWithOutdatedObjectsCommand extends ActiveWorkspacesCommandRunner { constructor( @InjectRepository(Workspace, 'core') protected readonly workspaceRepository: Repository, @@ -88,7 +90,9 @@ export class CleanViewsWithDeletedObjectMetadataCommand extends ActiveWorkspaces }); const validObjectMetadataIds = new Set( - objectMetadataEntities.map((entity) => entity.id), + objectMetadataEntities + .filter((entity) => entity.standardId !== STANDARD_OBJECT_IDS.activity) + .map((entity) => entity.id), ); const viewIdsToDelete = allViews diff --git a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.command.ts b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.command.ts index 7440a05b0..1ab48a059 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.command.ts @@ -6,7 +6,7 @@ import { Repository } from 'typeorm'; import { ActiveWorkspacesCommandRunner } from 'src/database/commands/active-workspaces.command'; import { AddIndexKeyToTasksAndNotesViewsCommand } from 'src/database/commands/upgrade-version/0-31/0-31-add-index-key-to-tasks-and-notes-views.command'; import { BackfillWorkspaceFavoritesCommand } from 'src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command'; -import { CleanViewsWithDeletedObjectMetadataCommand } from 'src/database/commands/upgrade-version/0-31/0-31-clean-views-with-deleted-object-metadata.command'; +import { CleanViewsAssociatedWithOutdatedObjectsCommand } from 'src/database/commands/upgrade-version/0-31/0-31-clean-views-associated-with-outdated-objects.command'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { SyncWorkspaceMetadataCommand } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command'; @@ -24,7 +24,7 @@ export class UpgradeTo0_31Command extends ActiveWorkspacesCommandRunner { protected readonly workspaceRepository: Repository, private readonly syncWorkspaceMetadataCommand: SyncWorkspaceMetadataCommand, private readonly backfillWorkspaceFavoritesCommand: BackfillWorkspaceFavoritesCommand, - private readonly cleanViewsWithDeletedObjectMetadataCommand: CleanViewsWithDeletedObjectMetadataCommand, + private readonly cleanViewsAssociatedWithOutdatedObjectsCommand: CleanViewsAssociatedWithOutdatedObjectsCommand, private readonly addIndexKeyToTasksAndNotesViewsCommand: AddIndexKeyToTasksAndNotesViewsCommand, ) { super(workspaceRepository); @@ -43,7 +43,7 @@ export class UpgradeTo0_31Command extends ActiveWorkspacesCommandRunner { }, workspaceIds, ); - await this.cleanViewsWithDeletedObjectMetadataCommand.executeActiveWorkspacesCommand( + await this.cleanViewsAssociatedWithOutdatedObjectsCommand.executeActiveWorkspacesCommand( passedParam, options, workspaceIds, diff --git a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.module.ts b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.module.ts index ec382de75..d53dc237e 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.module.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version/0-31/0-31-upgrade-version.module.ts @@ -3,7 +3,7 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { AddIndexKeyToTasksAndNotesViewsCommand } from 'src/database/commands/upgrade-version/0-31/0-31-add-index-key-to-tasks-and-notes-views.command'; import { BackfillWorkspaceFavoritesCommand } from 'src/database/commands/upgrade-version/0-31/0-31-backfill-workspace-favorites.command'; -import { CleanViewsWithDeletedObjectMetadataCommand } from 'src/database/commands/upgrade-version/0-31/0-31-clean-views-with-deleted-object-metadata.command'; +import { CleanViewsAssociatedWithOutdatedObjectsCommand } from 'src/database/commands/upgrade-version/0-31/0-31-clean-views-associated-with-outdated-objects.command'; import { UpgradeTo0_31Command } from 'src/database/commands/upgrade-version/0-31/0-31-upgrade-version.command'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @@ -18,7 +18,7 @@ import { WorkspaceSyncMetadataCommandsModule } from 'src/engine/workspace-manage providers: [ UpgradeTo0_31Command, BackfillWorkspaceFavoritesCommand, - CleanViewsWithDeletedObjectMetadataCommand, + CleanViewsAssociatedWithOutdatedObjectsCommand, AddIndexKeyToTasksAndNotesViewsCommand, ], })