Refactor runner delete action to be workspace agnostic (#17276)

# Introduction

Straight to the point refactor passing only universalIdentifier in
workspace migration delete actions instead of id so it can be run on any
workspace

Related to
https://github.com/orgs/twentyhq/projects/1/views/8?pane=issue&itemId=132343284&issue=twentyhq%7Ccore-team-issues%7C1641
This commit is contained in:
Paul Rastoin
2026-01-21 16:57:52 +01:00
committed by GitHub
parent d1a0aa3347
commit 05f0d572e9
50 changed files with 285 additions and 132 deletions
@@ -64,7 +64,7 @@ export class WorkspaceMigrationAgentActionsBuilderService extends WorkspaceEntit
action: {
type: 'delete',
metadataName: 'agent',
entityId: flatAgentToValidate.id,
universalIdentifier: flatAgentToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationCommandMenuItemActionsBuilderService extends Work
action: {
type: 'delete',
metadataName: 'commandMenuItem',
entityId: flatCommandMenuItemToValidate.id,
universalIdentifier: flatCommandMenuItemToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationCronTriggerActionsBuilderService extends Workspac
action: {
type: 'delete',
metadataName: 'cronTrigger',
entityId: flatCronTriggerToValidate.id,
universalIdentifier: flatCronTriggerToValidate.universalIdentifier,
},
};
}
@@ -78,7 +78,8 @@ export class WorkspaceMigrationDatabaseEventTriggerActionsBuilderService extends
action: {
type: 'delete',
metadataName: 'databaseEventTrigger',
entityId: flatDatabaseEventTriggerToValidate.id,
universalIdentifier:
flatDatabaseEventTriggerToValidate.universalIdentifier,
},
};
}
@@ -72,7 +72,7 @@ export class WorkspaceMigrationFieldActionsBuilderService extends WorkspaceEntit
action: {
type: 'delete',
metadataName: 'fieldMetadata',
entityId: flatFieldMetadataToValidate.id,
universalIdentifier: flatFieldMetadataToValidate.universalIdentifier,
objectMetadataId: flatFieldMetadataToValidate.objectMetadataId,
},
};
@@ -74,7 +74,7 @@ export class WorkspaceMigrationFrontComponentActionsBuilderService extends Works
action: {
type: 'delete',
metadataName: 'frontComponent',
entityId: flatFrontComponentToValidate.id,
universalIdentifier: flatFrontComponentToValidate.universalIdentifier,
},
};
}
@@ -70,7 +70,7 @@ export class WorkspaceMigrationIndexActionsBuilderService extends WorkspaceEntit
action: {
type: 'delete',
metadataName: 'index',
entityId: flatIndexToValidate.id,
universalIdentifier: flatIndexToValidate.universalIdentifier,
},
};
}
@@ -71,7 +71,7 @@ export class WorkspaceMigrationObjectActionsBuilderService extends WorkspaceEnti
action: {
type: 'delete',
metadataName: 'objectMetadata',
entityId: flatObjectMetadataToValidate.id,
universalIdentifier: flatObjectMetadataToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationPageLayoutTabActionsBuilderService extends Worksp
action: {
type: 'delete',
metadataName: 'pageLayoutTab',
entityId: flatPageLayoutTabToValidate.id,
universalIdentifier: flatPageLayoutTabToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationPageLayoutWidgetActionsBuilderService extends Wor
action: {
type: 'delete',
metadataName: 'pageLayoutWidget',
entityId: flatPageLayoutWidgetToValidate.id,
universalIdentifier: flatPageLayoutWidgetToValidate.universalIdentifier,
},
};
}
@@ -72,7 +72,7 @@ export class WorkspaceMigrationPageLayoutActionsBuilderService extends Workspace
action: {
type: 'delete',
metadataName: 'pageLayout',
entityId: flatPageLayoutToValidate.id,
universalIdentifier: flatPageLayoutToValidate.universalIdentifier,
},
};
}
@@ -70,7 +70,7 @@ export class WorkspaceMigrationRoleTargetActionsBuilderService extends Workspace
action: {
type: 'delete',
metadataName: 'roleTarget',
entityId: flatRoleTargetToValidate.id,
universalIdentifier: flatRoleTargetToValidate.universalIdentifier,
},
};
}
@@ -64,7 +64,7 @@ export class WorkspaceMigrationRoleActionsBuilderService extends WorkspaceEntity
action: {
type: 'delete',
metadataName: 'role',
entityId: flatRoleToValidate.id,
universalIdentifier: flatRoleToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationRouteTriggerActionsBuilderService extends Workspa
action: {
type: 'delete',
metadataName: 'routeTrigger',
entityId: flatRouteTriggerToValidate.id,
universalIdentifier: flatRouteTriggerToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,9 @@ export class WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderSer
}
const {
flatEntityToValidate: { id: predicateGroupId },
flatEntityToValidate: {
universalIdentifier: predicateGroupUniversalIdentifier,
},
} = args;
return {
@@ -82,7 +84,7 @@ export class WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderSer
action: {
type: 'delete',
metadataName: 'rowLevelPermissionPredicateGroup',
entityId: predicateGroupId,
universalIdentifier: predicateGroupUniversalIdentifier,
},
};
}
@@ -74,7 +74,9 @@ export class WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService
}
const {
flatEntityToValidate: { id: predicateId },
flatEntityToValidate: {
universalIdentifier: predicateUniversalIdentifier,
},
} = args;
return {
@@ -82,7 +84,7 @@ export class WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService
action: {
type: 'delete',
metadataName: 'rowLevelPermissionPredicate',
entityId: predicateId,
universalIdentifier: predicateUniversalIdentifier,
},
};
}
@@ -114,7 +114,8 @@ export class WorkspaceMigrationServerlessFunctionActionsBuilderService extends W
action: {
type: 'delete',
metadataName: 'serverlessFunction',
entityId: flatServerlessFunctionToValidate.id,
universalIdentifier:
flatServerlessFunctionToValidate.universalIdentifier,
},
};
}
@@ -64,7 +64,7 @@ export class WorkspaceMigrationSkillActionsBuilderService extends WorkspaceEntit
action: {
type: 'delete',
metadataName: 'skill',
entityId: flatSkillToValidate.id,
universalIdentifier: flatSkillToValidate.universalIdentifier,
},
};
}
@@ -68,7 +68,7 @@ export class WorkspaceMigrationViewFieldActionsBuilderService extends WorkspaceE
action: {
type: 'delete',
metadataName: 'viewField',
entityId: flatViewFieldToValidate.id,
universalIdentifier: flatViewFieldToValidate.universalIdentifier,
},
};
}
@@ -74,7 +74,7 @@ export class WorkspaceMigrationViewFilterGroupActionsBuilderService extends Work
action: {
type: 'delete',
metadataName: 'viewFilterGroup',
entityId: flatViewFilterGroupToValidate.id,
universalIdentifier: flatViewFilterGroupToValidate.universalIdentifier,
},
};
}
@@ -70,7 +70,7 @@ export class WorkspaceMigrationViewFilterActionsBuilderService extends Workspace
action: {
type: 'delete',
metadataName: 'viewFilter',
entityId: flatViewFilterToValidate.id,
universalIdentifier: flatViewFilterToValidate.universalIdentifier,
},
};
}
@@ -70,7 +70,7 @@ export class WorkspaceMigrationViewGroupActionsBuilderService extends WorkspaceE
action: {
type: 'delete',
metadataName: 'viewGroup',
entityId: flatViewGroupToValidate.id,
universalIdentifier: flatViewGroupToValidate.universalIdentifier,
},
};
}
@@ -64,7 +64,7 @@ export class WorkspaceMigrationViewActionsBuilderService extends WorkspaceEntity
action: {
type: 'delete',
metadataName: 'view',
entityId: flatViewToValidate.id,
universalIdentifier: flatViewToValidate.universalIdentifier,
},
};
}
@@ -1,7 +1,7 @@
import { type AllMetadataName } from 'twenty-shared/metadata';
export type BaseDeleteWorkspaceMigrationAction<T extends AllMetadataName> = {
entityId: string;
universalIdentifier: string;
type: 'delete';
metadataName: T;
};
@@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { DeleteAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,13 +19,18 @@ export class DeleteAgentActionHandlerService extends WorkspaceMigrationRunnerAct
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteAgentAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatAgent = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatAgentMaps,
universalIdentifier,
});
const agentRepository =
queryRunner.manager.getRepository<AgentEntity>(AgentEntity);
await agentRepository.delete({ id: entityId, workspaceId });
await agentRepository.delete({ id: flatAgent.id, workspaceId });
}
async executeForWorkspaceSchema(
@@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { CommandMenuItemEntity } from 'src/engine/metadata-modules/command-menu-item/entities/command-menu-item.entity';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { DeleteCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,15 +19,23 @@ export class DeleteCommandMenuItemActionHandlerService extends WorkspaceMigratio
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteCommandMenuItemAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatCommandMenuItem = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatCommandMenuItemMaps,
universalIdentifier,
});
const commandMenuItemRepository =
queryRunner.manager.getRepository<CommandMenuItemEntity>(
CommandMenuItemEntity,
);
await commandMenuItemRepository.delete({ id: entityId, workspaceId });
await commandMenuItemRepository.delete({
id: flatCommandMenuItem.id,
workspaceId,
});
}
async executeForWorkspaceSchema(
@@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { DeleteCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteCronTriggerActionHandlerService extends WorkspaceMigrationRun
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteCronTriggerAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatCronTrigger = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatCronTriggerMaps,
universalIdentifier,
});
const cronTriggerRepository =
queryRunner.manager.getRepository<CronTriggerEntity>(CronTriggerEntity);
await cronTriggerRepository.delete({
id: entityId,
id: flatCronTrigger.id,
workspaceId,
});
}
@@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { DatabaseEventTriggerEntity } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { DeleteDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,8 +19,15 @@ export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMig
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteDatabaseEventTriggerAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatDatabaseEventTrigger = findFlatEntityByUniversalIdentifierOrThrow(
{
flatEntityMaps: allFlatEntityMaps.flatDatabaseEventTriggerMaps,
universalIdentifier,
},
);
const databaseEventTriggerRepository =
queryRunner.manager.getRepository<DatabaseEventTriggerEntity>(
@@ -27,7 +35,7 @@ export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMig
);
await databaseEventTriggerRepository.delete({
id: entityId,
id: flatDatabaseEventTrigger.id,
workspaceId,
});
}
@@ -1,11 +1,10 @@
import { Injectable } from '@nestjs/common';
import { In } from 'typeorm';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service';
import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action';
import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -31,16 +30,22 @@ export class DeleteFieldActionHandlerService extends WorkspaceMigrationRunnerAct
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteFieldAction>,
) {
const { action, queryRunner } = context;
const { action, queryRunner, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatFieldMetadata = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatFieldMetadataMaps,
universalIdentifier,
});
const fieldMetadataRepository =
queryRunner.manager.getRepository<FieldMetadataEntity>(
FieldMetadataEntity,
);
const { entityId } = action;
await fieldMetadataRepository.delete({
id: In([entityId]),
id: flatFieldMetadata.id,
workspaceId: context.workspaceId,
});
}
@@ -53,16 +58,16 @@ export class DeleteFieldActionHandlerService extends WorkspaceMigrationRunnerAct
allFlatEntityMaps: { flatObjectMetadataMaps, flatFieldMetadataMaps },
workspaceId,
} = context;
const { objectMetadataId, entityId } = action;
const { objectMetadataId, universalIdentifier } = action;
const flatObjectMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityMaps: flatObjectMetadataMaps,
flatEntityId: objectMetadataId,
});
const fieldMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({
const fieldMetadata = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: flatFieldMetadataMaps,
flatEntityId: entityId,
universalIdentifier,
});
const { schemaName, tableName } = getWorkspaceSchemaContextForMigration({
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { FrontComponentEntity } from 'src/engine/metadata-modules/front-component/entities/front-component.entity';
import { DeleteFrontComponentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/front-component/types/workspace-migration-front-component-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,15 +19,23 @@ export class DeleteFrontComponentActionHandlerService extends WorkspaceMigration
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteFrontComponentAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatFrontComponent = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatFrontComponentMaps,
universalIdentifier,
});
const frontComponentRepository =
queryRunner.manager.getRepository<FrontComponentEntity>(
FrontComponentEntity,
);
await frontComponentRepository.delete({ id: entityId, workspaceId });
await frontComponentRepository.delete({
id: flatFrontComponent.id,
workspaceId,
});
}
async executeForWorkspaceSchema(
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service';
import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util';
import { type DeleteIndexAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action';
@@ -26,11 +26,18 @@ export class DeleteIndexActionHandlerService extends WorkspaceMigrationRunnerAct
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteIndexAction>,
): Promise<void> {
const { action, queryRunner } = context;
const { action, queryRunner, allFlatEntityMaps, workspaceId } = context;
const { universalIdentifier } = action;
const flatIndex = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatIndexMaps,
universalIdentifier,
});
await deleteIndexMetadata({
entityId: action.entityId,
entityId: flatIndex.id,
queryRunner,
workspaceId,
});
}
@@ -43,13 +50,13 @@ export class DeleteIndexActionHandlerService extends WorkspaceMigrationRunnerAct
queryRunner,
workspaceId,
} = context;
const { universalIdentifier } = action;
const flatIndexMetadataToDelete = findFlatEntityByIdInFlatEntityMapsOrThrow(
{
flatEntityId: action.entityId,
const flatIndexMetadataToDelete =
findFlatEntityByUniversalIdentifierOrThrow({
universalIdentifier,
flatEntityMaps: flatIndexMaps,
},
);
});
const schemaName = getWorkspaceSchemaName(workspaceId);
@@ -28,12 +28,13 @@ export class UpdateIndexActionHandlerService extends WorkspaceMigrationRunnerAct
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<UpdateIndexAction>,
): Promise<void> {
const { action, queryRunner } = context;
const { action, queryRunner, workspaceId } = context;
// Delete old index metadata
await deleteIndexMetadata({
entityId: action.entityId,
queryRunner,
workspaceId,
});
// Create new index metadata
@@ -124,15 +124,18 @@ export const insertIndexMetadata = async ({
export const deleteIndexMetadata = async ({
entityId,
queryRunner,
workspaceId,
}: {
entityId: string;
queryRunner: QueryRunner;
workspaceId: string;
}): Promise<void> => {
const indexMetadataRepository =
queryRunner.manager.getRepository<IndexMetadataEntity>(IndexMetadataEntity);
await indexMetadataRepository.delete({
id: entityId,
workspaceId,
});
};
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-composite-flat-field-metadata.util';
import { isEnumFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-enum-flat-field-metadata.util';
@@ -31,15 +31,20 @@ export class DeleteObjectActionHandlerService extends WorkspaceMigrationRunnerAc
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteObjectAction>,
): Promise<void> {
const { action, queryRunner } = context;
const { entityId } = action;
const { action, queryRunner, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatObjectMetadata = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatObjectMetadataMaps,
universalIdentifier,
});
const objectMetadataRepository =
queryRunner.manager.getRepository<ObjectMetadataEntity>(
ObjectMetadataEntity,
);
await objectMetadataRepository.delete(entityId);
await objectMetadataRepository.delete(flatObjectMetadata.id);
}
async executeForWorkspaceSchema(
@@ -51,11 +56,11 @@ export class DeleteObjectActionHandlerService extends WorkspaceMigrationRunnerAc
allFlatEntityMaps: { flatObjectMetadataMaps, flatFieldMetadataMaps },
workspaceId,
} = context;
const { entityId } = action;
const { universalIdentifier } = action;
const flatObjectMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({
const flatObjectMetadata = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: flatObjectMetadataMaps,
flatEntityId: entityId,
universalIdentifier,
});
const { schemaName, tableName } = getWorkspaceSchemaContextForMigration({
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity';
import { DeletePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,15 +19,23 @@ export class DeletePageLayoutTabActionHandlerService extends WorkspaceMigrationR
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeletePageLayoutTabAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatPageLayoutTab = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatPageLayoutTabMaps,
universalIdentifier,
});
const pageLayoutTabRepository =
queryRunner.manager.getRepository<PageLayoutTabEntity>(
PageLayoutTabEntity,
);
await pageLayoutTabRepository.delete({ id: entityId, workspaceId });
await pageLayoutTabRepository.delete({
id: flatPageLayoutTab.id,
workspaceId,
});
}
async executeForWorkspaceSchema(
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
import { DeletePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,15 +19,20 @@ export class DeletePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeletePageLayoutWidgetAction>,
): Promise<void> {
const { action, queryRunner } = context;
const { entityId } = action;
const { action, queryRunner, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatPageLayoutWidget = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatPageLayoutWidgetMaps,
universalIdentifier,
});
const pageLayoutWidgetRepository =
queryRunner.manager.getRepository<PageLayoutWidgetEntity>(
PageLayoutWidgetEntity,
);
await pageLayoutWidgetRepository.delete({ id: entityId });
await pageLayoutWidgetRepository.delete({ id: flatPageLayoutWidget.id });
}
async executeForWorkspaceSchema(
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
import { DeletePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,13 +19,18 @@ export class DeletePageLayoutActionHandlerService extends WorkspaceMigrationRunn
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeletePageLayoutAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatPageLayout = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatPageLayoutMaps,
universalIdentifier,
});
const pageLayoutRepository =
queryRunner.manager.getRepository<PageLayoutEntity>(PageLayoutEntity);
await pageLayoutRepository.delete({ id: entityId, workspaceId });
await pageLayoutRepository.delete({ id: flatPageLayout.id, workspaceId });
}
async executeForWorkspaceSchema(
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity';
import { DeleteRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteRoleTargetActionHandlerService extends WorkspaceMigrationRunn
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteRoleTargetAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatRoleTarget = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatRoleTargetMaps,
universalIdentifier,
});
const roleTargetRepository =
queryRunner.manager.getRepository<RoleTargetEntity>(RoleTargetEntity);
await roleTargetRepository.delete({
id: entityId,
id: flatRoleTarget.id,
workspaceId,
});
}
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity';
import { DeleteRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,13 +19,18 @@ export class DeleteRoleActionHandlerService extends WorkspaceMigrationRunnerActi
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteRoleAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatRole = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatRoleMaps,
universalIdentifier,
});
const roleRepository =
queryRunner.manager.getRepository<RoleEntity>(RoleEntity);
await roleRepository.delete({ id: entityId, workspaceId });
await roleRepository.delete({ id: flatRole.id, workspaceId });
}
async executeForWorkspaceSchema(
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
import { DeleteRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteRouteTriggerActionHandlerService extends WorkspaceMigrationRu
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteRouteTriggerAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatRouteTrigger = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatRouteTriggerMaps,
universalIdentifier,
});
const routeTriggerRepository =
queryRunner.manager.getRepository<RouteTriggerEntity>(RouteTriggerEntity);
await routeTriggerRepository.delete({
id: entityId,
id: flatRouteTrigger.id,
workspaceId,
});
}
@@ -4,6 +4,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
import { DeleteRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -16,8 +17,15 @@ export class DeleteRowLevelPermissionPredicateGroupActionHandlerService extends
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteRowLevelPermissionPredicateGroupAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatRowLevelPermissionPredicateGroup =
findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps:
allFlatEntityMaps.flatRowLevelPermissionPredicateGroupMaps,
universalIdentifier,
});
const repository =
queryRunner.manager.getRepository<RowLevelPermissionPredicateGroupEntity>(
@@ -25,7 +33,7 @@ export class DeleteRowLevelPermissionPredicateGroupActionHandlerService extends
);
await repository.delete({
id: entityId,
id: flatRowLevelPermissionPredicateGroup.id,
workspaceId,
});
}
@@ -4,6 +4,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity';
import { DeleteRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -16,8 +17,14 @@ export class DeleteRowLevelPermissionPredicateActionHandlerService extends Works
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteRowLevelPermissionPredicateAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatRowLevelPermissionPredicate =
findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatRowLevelPermissionPredicateMaps,
universalIdentifier,
});
const repository =
queryRunner.manager.getRepository<RowLevelPermissionPredicateEntity>(
@@ -25,7 +32,7 @@ export class DeleteRowLevelPermissionPredicateActionHandlerService extends Works
);
await repository.delete({
id: entityId,
id: flatRowLevelPermissionPredicate.id,
workspaceId,
});
}
@@ -4,7 +4,7 @@ import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-mana
import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { getServerlessFolderOrThrow } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { DeleteServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -21,8 +21,13 @@ export class DeleteServerlessFunctionActionHandlerService extends WorkspaceMigra
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteServerlessFunctionAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatServerlessFunction = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatServerlessFunctionMaps,
universalIdentifier,
});
const serverlessFunctionRepository =
queryRunner.manager.getRepository<ServerlessFunctionEntity>(
@@ -30,26 +35,20 @@ export class DeleteServerlessFunctionActionHandlerService extends WorkspaceMigra
);
await serverlessFunctionRepository.delete({
id: entityId,
id: flatServerlessFunction.id,
workspaceId,
});
const existingServerlessFunction =
findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityId: entityId,
flatEntityMaps: context.allFlatEntityMaps.flatServerlessFunctionMaps,
});
// TODO: Should implement a cron task or a job to delete the files after a certain period of time
await this.fileStorageService.move({
from: {
folderPath: getServerlessFolderOrThrow({
flatServerlessFunction: existingServerlessFunction,
flatServerlessFunction,
}),
},
to: {
folderPath: getServerlessFolderOrThrow({
flatServerlessFunction: existingServerlessFunction,
flatServerlessFunction,
toDelete: true,
}),
},
@@ -59,25 +58,24 @@ export class DeleteServerlessFunctionActionHandlerService extends WorkspaceMigra
async rollbackForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteServerlessFunctionAction>,
): Promise<void> {
const { action } = context;
const { entityId } = action;
const { action, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const existingServerlessFunction =
findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityId: entityId,
flatEntityMaps: context.allFlatEntityMaps.flatServerlessFunctionMaps,
});
const flatServerlessFunction = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatServerlessFunctionMaps,
universalIdentifier,
});
await this.fileStorageService.move({
from: {
folderPath: getServerlessFolderOrThrow({
flatServerlessFunction: existingServerlessFunction,
flatServerlessFunction,
toDelete: true,
}),
},
to: {
folderPath: getServerlessFolderOrThrow({
flatServerlessFunction: existingServerlessFunction,
flatServerlessFunction,
toDelete: false,
}),
},
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { SkillEntity } from 'src/engine/metadata-modules/skill/entities/skill.entity';
import { DeleteSkillAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,13 +19,18 @@ export class DeleteSkillActionHandlerService extends WorkspaceMigrationRunnerAct
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteSkillAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatSkill = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatSkillMaps,
universalIdentifier,
});
const skillRepository =
queryRunner.manager.getRepository<SkillEntity>(SkillEntity);
await skillRepository.delete({ id: entityId, workspaceId });
await skillRepository.delete({ id: flatSkill.id, workspaceId });
}
async executeForWorkspaceSchema(
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity';
import { DeleteViewFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteViewFieldActionHandlerService extends WorkspaceMigrationRunne
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteViewFieldAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatViewField = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatViewFieldMaps,
universalIdentifier,
});
const viewFieldRepository =
queryRunner.manager.getRepository<ViewFieldEntity>(ViewFieldEntity);
await viewFieldRepository.delete({
id: entityId,
id: flatViewField.id,
workspaceId,
});
}
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity';
import { type DeleteViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type';
import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,8 +19,13 @@ export class DeleteViewFilterGroupActionHandlerService extends WorkspaceMigratio
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteViewFilterGroupAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatViewFilterGroup = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatViewFilterGroupMaps,
universalIdentifier,
});
const viewFilterGroupRepository =
queryRunner.manager.getRepository<ViewFilterGroupEntity>(
@@ -27,7 +33,7 @@ export class DeleteViewFilterGroupActionHandlerService extends WorkspaceMigratio
);
await viewFilterGroupRepository.delete({
id: entityId,
id: flatViewFilterGroup.id,
workspaceId,
});
}
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity';
import { DeleteViewFilterAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteViewFilterActionHandlerService extends WorkspaceMigrationRunn
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteViewFilterAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatViewFilter = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatViewFilterMaps,
universalIdentifier,
});
const viewFilterRepository =
queryRunner.manager.getRepository<ViewFilterEntity>(ViewFilterEntity);
await viewFilterRepository.delete({
id: entityId,
id: flatViewFilter.id,
workspaceId,
});
}
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity';
import { DeleteViewGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -14,14 +15,19 @@ export class DeleteViewGroupActionHandlerService extends WorkspaceMigrationRunne
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteViewGroupAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatViewGroup = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatViewGroupMaps,
universalIdentifier,
});
const viewGroupRepository =
queryRunner.manager.getRepository<ViewGroupEntity>(ViewGroupEntity);
await viewGroupRepository.delete({
id: entityId,
id: flatViewGroup.id,
workspaceId,
});
}
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity';
import { DeleteViewAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@@ -18,14 +19,19 @@ export class DeleteViewActionHandlerService extends WorkspaceMigrationRunnerActi
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteViewAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const { action, queryRunner, workspaceId, allFlatEntityMaps } = context;
const { universalIdentifier } = action;
const flatView = findFlatEntityByUniversalIdentifierOrThrow({
flatEntityMaps: allFlatEntityMaps.flatViewMaps,
universalIdentifier,
});
const viewRepository =
queryRunner.manager.getRepository<ViewEntity>(ViewEntity);
await viewRepository.delete({
id: entityId,
id: flatView.id,
workspaceId,
});
}
@@ -5,7 +5,7 @@ import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/
import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name';
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
import { deleteFlatEntityFromFlatEntityAndRelatedEntityMapsThroughMutationOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util';
type DeleteAction<TMetadataName extends AllMetadataName> =
@@ -48,10 +48,10 @@ export const optimisticallyApplyDeleteActionOnAllFlatEntityMaps = <
case 'pageLayoutTab':
case 'commandMenuItem':
case 'frontComponent': {
const flatEntityToDelete = findFlatEntityByIdInFlatEntityMapsOrThrow<
const flatEntityToDelete = findFlatEntityByUniversalIdentifierOrThrow<
MetadataFlatEntity<typeof action.metadataName>
>({
flatEntityId: action.entityId,
universalIdentifier: action.universalIdentifier,
flatEntityMaps:
allFlatEntityMaps[getMetadataFlatEntityMapsKey(action.metadataName)],
});