Fix and refactor relation field name collision validation (#15920)

# Introduction
Fixes https://github.com/twentyhq/private-issues/issues/371
We weren't strictly validating relation field collision on join column
name availability of the target field object

## Refactor
Extracted morph or relation specific condition out of the common flat
field metadata name validate availability to be located in the dedicated
morph or relation flat field validator

## Tests
Added two tests, ONE_TO_MANY and MANY_TO_ONE in order to cover the use
case
This commit is contained in:
Paul Rastoin
2025-11-20 16:10:35 +01:00
committed by GitHub
parent 9c6d8330df
commit e5255df1a1
11 changed files with 484 additions and 86 deletions
@@ -131,7 +131,7 @@ export class FlatFieldMetadataValidatorService {
validationResult.errors.push(
...validateFlatFieldMetadataName(flatFieldMetadataToValidate.name),
...validateFlatFieldMetadataNameAvailability({
flatFieldMetadata: flatFieldMetadataToValidate,
name: flatFieldMetadataToValidate.name,
flatFieldMetadataMaps: optimisticFlatFieldMetadataMaps,
flatObjectMetadata,
}),
@@ -152,6 +152,7 @@ export class FlatFieldMetadataValidatorService {
const fieldMetadataTypeValidationErrors =
await this.flatFieldMetadataTypeValidatorService.validateFlatFieldMetadataTypeSpecificities(
{
updates,
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
flatFieldMetadataMaps: optimisticFlatFieldMetadataMaps,
flatObjectMetadataMaps,
@@ -313,9 +314,8 @@ export class FlatFieldMetadataValidatorService {
validationResult.errors.push(
...validateFlatFieldMetadataNameAvailability({
flatFieldMetadata: flatFieldMetadataToValidate,
name: flatFieldMetadataToValidate.name,
flatFieldMetadataMaps: optimisticFlatFieldMetadataMaps,
remainingFlatEntityMapsToValidate,
flatObjectMetadata: parentFlatObjectMetadata,
}),
);