logicFunction sourceHandlerPath and builtHandlerPath manifest updates are not saved (#18230)

and delete legacy files
This commit is contained in:
Weiko
2026-02-25 19:24:24 +01:00
committed by GitHub
parent 856859f9f3
commit 4ae8381ffc
3 changed files with 39 additions and 3 deletions
@@ -1,7 +1,12 @@
import { Injectable } from '@nestjs/common';
import { FileFolder } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
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 { LogicFunctionEntity } from 'src/engine/metadata-modules/logic-function/logic-function.entity';
import { resolveUniversalUpdateRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-update-relation-identifiers-to-ids.util';
@@ -19,6 +24,10 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
'update',
'logicFunction',
) {
constructor(private readonly fileStorageService: FileStorageService) {
super();
}
override async transpileUniversalActionToFlatAction(
context: WorkspaceMigrationActionRunnerArgs<UniversalUpdateLogicFunctionAction>,
): Promise<FlatUpdateLogicFunctionAction> {
@@ -46,9 +55,26 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
async executeForMetadata(
context: WorkspaceMigrationActionRunnerContext<FlatUpdateLogicFunctionAction>,
): Promise<void> {
const { flatAction, queryRunner, workspaceId } = context;
const {
flatAction,
queryRunner,
workspaceId,
allFlatEntityMaps,
flatApplication,
} = context;
const { entityId, update } = flatAction;
const existingLogicFunction = findFlatEntityByIdInFlatEntityMapsOrThrow({
flatEntityMaps: allFlatEntityMaps.flatLogicFunctionMaps,
flatEntityId: entityId,
});
const applicationUniversalIdentifier = flatApplication.universalIdentifier;
const builtPathChanged =
isDefined(update.builtHandlerPath) &&
update.builtHandlerPath !== existingLogicFunction.builtHandlerPath;
const logicFunctionRepository =
queryRunner.manager.getRepository<LogicFunctionEntity>(
LogicFunctionEntity,
@@ -58,5 +84,14 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
{ id: entityId, workspaceId },
update as Parameters<typeof logicFunctionRepository.update>[1],
);
if (builtPathChanged) {
await this.fileStorageService.delete({
workspaceId,
applicationUniversalIdentifier,
fileFolder: FileFolder.BuiltLogicFunction,
resourcePath: existingLogicFunction.builtHandlerPath,
});
}
}
}