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,4 +1,4 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should match snapshot 1`] = `
{
@@ -90,6 +90,7 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma
"cronTriggerSettings",
"databaseEventTriggerSettings",
"httpRouteTriggerSettings",
"builtHandlerPath",
],
"propertiesToStringify": [
"toolInputSchema",
@@ -577,7 +577,7 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = {
universalProperty: undefined,
},
builtHandlerPath: {
toCompare: false,
toCompare: true,
toStringify: false,
universalProperty: undefined,
},
@@ -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,
});
}
}
}