[Apps SDK] Add error message if relationType is missing (#19006)

Before
<img width="2138" height="1434" alt="image"
src="https://github.com/user-attachments/assets/23aa04ae-9994-4ff9-bac8-9f245e6ca05f"
/>


After
<img width="1029" height="610" alt="image"
src="https://github.com/user-attachments/assets/7af48bc0-678d-4451-8cfb-a5e4028f2c2d"
/>
This commit is contained in:
Marie
2026-03-26 19:25:12 +04:00
committed by GitHub
parent 8ef99671e2
commit c3a3cf9c67
5 changed files with 253 additions and 6 deletions
@@ -34,6 +34,10 @@ export const validateJunctionTargetSettings = ({
}: ValidateJunctionTargetSettingsArgs): FlatFieldMetadataValidationError[] => {
const { universalSettings } = universalFlatFieldMetadata;
if (!isDefined(universalSettings)) {
return [];
}
const junctionTargetFieldUniversalIdentifier =
universalSettings.junctionTargetFieldUniversalIdentifier;
@@ -1,4 +1,3 @@
import { msg } from '@lingui/core/macro';
import { RelationType } from 'twenty-shared/types';
import { assertUnreachable, isDefined } from 'twenty-shared/utils';
@@ -25,6 +24,15 @@ export const validateMorphOrRelationFlatFieldJoinColumName = ({
}): FlatFieldMetadataValidationError[] => {
const errors: FlatFieldMetadataValidationError[] = [];
if (!isDefined(universalFlatFieldMetadata.universalSettings?.relationType)) {
errors.push({
code: FieldMetadataExceptionCode.INVALID_FIELD_INPUT,
message: `Relation field "${universalFlatFieldMetadata.name}" is missing relationType in universalSettings. Expected MANY_TO_ONE or ONE_TO_MANY.`,
});
return errors;
}
switch (universalFlatFieldMetadata.universalSettings.relationType) {
case RelationType.MANY_TO_ONE: {
if (
@@ -34,7 +42,6 @@ export const validateMorphOrRelationFlatFieldJoinColumName = ({
code: FieldMetadataExceptionCode.INVALID_FIELD_INPUT,
message:
'Many to one field metadata should carry the join column name in its settings',
userFriendlyMessage: msg`A many to one relation field should always declare a join column`,
});
return errors;
@@ -50,7 +57,6 @@ export const validateMorphOrRelationFlatFieldJoinColumName = ({
errors.push({
code: FieldMetadataExceptionCode.INVALID_FIELD_INPUT,
message: 'Could not find relation field parent flat object',
userFriendlyMessage: msg`Could not find relation field parent flat object`,
});
return errors;
@@ -74,7 +80,6 @@ export const validateMorphOrRelationFlatFieldJoinColumName = ({
code: FieldMetadataExceptionCode.INVALID_FIELD_INPUT,
message:
'One to many field metadata should not carry the join column name in its settings',
userFriendlyMessage: msg`A one to many relation field should never declare a join column`,
});
}
break;
@@ -14,6 +14,10 @@ export const validateMorphOrRelationFlatFieldOnDelete = ({
}): FlatFieldMetadataValidationError[] => {
const errors: FlatFieldMetadataValidationError[] = [];
if (!isDefined(universalFlatFieldMetadata.universalSettings?.relationType)) {
return errors;
}
if (
isDefined(universalFlatFieldMetadata.universalSettings.onDelete) &&
universalFlatFieldMetadata.universalSettings.relationType !==