Failing morph relation creation v2 integration testing & fixes (#14253)
# Introduction closes https://github.com/twentyhq/core-team-issues/issues/1408
This commit is contained in:
+3
-4
@@ -1,6 +1,7 @@
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { type FlatRelationTargetFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type';
|
||||
import { fromObjectMetadataItemWithFieldMapsToFlatObjectMetadataWithoutFields } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata-without-fields.util';
|
||||
@@ -12,10 +13,8 @@ import {
|
||||
} from 'src/engine/metadata-modules/workspace-metadata-cache/exceptions/workspace-metadata-cache.exception';
|
||||
import { isCachedFieldMetadataEntityOfType } from 'src/engine/utils/is-cached-field-metadata-of-type.util';
|
||||
|
||||
const fromCachedRelationFieldMetadataEntityToFlatRelationTargetFieldMetadata = <
|
||||
T extends FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION,
|
||||
>(
|
||||
cachedFieldMetadataEntity: CachedFieldMetadataEntity<T>,
|
||||
const fromCachedRelationFieldMetadataEntityToFlatRelationTargetFieldMetadata = (
|
||||
cachedFieldMetadataEntity: CachedFieldMetadataEntity<MorphOrRelationFieldMetadataType>,
|
||||
): FlatRelationTargetFieldMetadata => {
|
||||
return {
|
||||
...cachedFieldMetadataEntity,
|
||||
|
||||
+12
-7
@@ -4,7 +4,8 @@ import {
|
||||
} from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { computeFlatFieldMetadataRelatedFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util';
|
||||
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
|
||||
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
import { findFlatObjectMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
|
||||
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
@@ -46,13 +47,17 @@ export const fromDeleteObjectInputToFlatFieldMetadatasToDelete = ({
|
||||
const flatFieldMetadatasToDelete =
|
||||
flatObjectMetadataToDelete.flatFieldMetadatas.flatMap(
|
||||
(flatFieldMetadata) => {
|
||||
const relatedFlatFieldMetadata =
|
||||
computeFlatFieldMetadataRelatedFlatFieldMetadata({
|
||||
flatFieldMetadata,
|
||||
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
|
||||
});
|
||||
if (isMorphOrRelationFlatFieldMetadata(flatFieldMetadata)) {
|
||||
const relationTargetFlatFieldMetadata =
|
||||
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
|
||||
flatFieldMetadata,
|
||||
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
|
||||
});
|
||||
|
||||
return [flatFieldMetadata, ...relatedFlatFieldMetadata];
|
||||
return [flatFieldMetadata, relationTargetFlatFieldMetadata];
|
||||
}
|
||||
|
||||
return [flatFieldMetadata];
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
|
||||
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataEntityOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
|
||||
import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
|
||||
import { findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
|
||||
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
@@ -23,13 +23,13 @@ export const getFlatObjectMetadataManyToOneTargetMorphRelationFlatFieldMetadatas
|
||||
(
|
||||
flatFieldMetadata,
|
||||
): flatFieldMetadata is FlatFieldMetadata<FieldMetadataType.RELATION> =>
|
||||
isFlatFieldMetadataEntityOfType(
|
||||
isFlatFieldMetadataOfType(
|
||||
flatFieldMetadata,
|
||||
FieldMetadataType.RELATION,
|
||||
) &&
|
||||
flatFieldMetadata.settings.relationType ===
|
||||
RelationType.MANY_TO_ONE &&
|
||||
isFlatFieldMetadataEntityOfType(
|
||||
isFlatFieldMetadataOfType(
|
||||
flatFieldMetadata.flatRelationTargetFieldMetadata,
|
||||
FieldMetadataType.MORPH_RELATION,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user