Fix workflow relation variables (#16362)

display many to one relations instead of one to many
This commit is contained in:
Thomas Trompette
2025-12-05 16:11:37 +01:00
committed by GitHub
parent 2466d81ace
commit de4e78e5b2
3 changed files with 25 additions and 12 deletions
@@ -56,7 +56,7 @@ describe('shouldGenerateFieldFakeValue', () => {
expect(shouldGenerateFieldFakeValue(field)).toBe(true);
});
it('should return false for many-to-one relation fields', () => {
it('should return true for many-to-one relation fields', () => {
const field = getFlatFieldMetadataMock({
objectMetadataId: '20202020-0000-0000-0000-000000000001',
isSystem: false,
@@ -69,6 +69,6 @@ describe('shouldGenerateFieldFakeValue', () => {
},
});
expect(shouldGenerateFieldFakeValue(field)).toBe(false);
expect(shouldGenerateFieldFakeValue(field)).toBe(true);
});
});
@@ -2,6 +2,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
import { type ObjectMetadataInfo } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { type FieldOutputSchema } from 'src/modules/workflow/workflow-builder/workflow-schema/types/output-schema.type';
import { generateFakeObjectRecord } from 'src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-object-record';
@@ -33,7 +34,7 @@ export const generateObjectRecordFields = ({
continue;
}
if (field.type !== FieldMetadataType.RELATION) {
if (!isMorphOrRelationFlatFieldMetadata(field)) {
result[field.name] = generateFakeRecordField({
type: field.type,
label: field.label,
@@ -44,10 +45,6 @@ export const generateObjectRecordFields = ({
continue;
}
if (!isDefined(field.relationTargetObjectMetadataId)) {
continue;
}
if (depth < maxDepth) {
const relationTargetObjectMetadata =
flatObjectMetadataMaps.byId[field.relationTargetObjectMetadataId];
@@ -2,6 +2,17 @@ import { FieldMetadataType, RelationType } from 'twenty-shared/types';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
const EXCLUDED_SYSTEM_FIELDS = ['searchVector', 'position'];
const isActiveField = (field: FlatFieldMetadata) => {
return field.isActive;
};
const isExcludedSystemField = (field: FlatFieldMetadata) => {
return field.isSystem && EXCLUDED_SYSTEM_FIELDS.includes(field.name);
};
const isManyToOneRelationField = (field: FlatFieldMetadata) => {
if (isFlatFieldMetadataOfType(field, FieldMetadataType.RELATION)) {
@@ -11,12 +22,17 @@ const isManyToOneRelationField = (field: FlatFieldMetadata) => {
return false;
};
const EXCLUDED_SYSTEM_FIELDS = ['searchVector', 'position'];
export const shouldGenerateFieldFakeValue = (field: FlatFieldMetadata) => {
const isExcludedRelationField = (field: FlatFieldMetadata) => {
return (
field.isActive &&
!(EXCLUDED_SYSTEM_FIELDS.includes(field.name) && field.isSystem) &&
isMorphOrRelationFlatFieldMetadata(field) &&
!isManyToOneRelationField(field)
);
};
export const shouldGenerateFieldFakeValue = (field: FlatFieldMetadata) => {
return (
isActiveField(field) &&
!isExcludedSystemField(field) &&
!isExcludedRelationField(field)
);
};