Update object handle morph join col rename (#14153)
# Introduction When udpating a flat object metadata name we need to search for RELATION field that has a MORPH RELATION target flat field metadata with MANY_TO_ONE relationType as its settings are binded to the updated flat object metadata name In the best of the world we would remove this complexity to be computed at runtime only and deprecate implemented logic here close https://github.com/twentyhq/core-team-issues/issues/1412
This commit is contained in:
+25
-9
@@ -12,6 +12,7 @@ import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadat
|
||||
import { deleteObjectFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
|
||||
import { getSubFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
|
||||
import { getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util';
|
||||
import { replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
|
||||
import { replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
|
||||
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import { fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreate } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util';
|
||||
@@ -55,22 +56,37 @@ export class ObjectMetadataServiceV2 {
|
||||
},
|
||||
);
|
||||
|
||||
const optimisticallyUpdatedFlatObjectMetadata =
|
||||
fromUpdateObjectInputToFlatObjectMetadata({
|
||||
existingFlatObjectMetadataMaps,
|
||||
updateObjectInput,
|
||||
});
|
||||
const {
|
||||
flatObjectMetadata: optimisticallyUpdatedFlatObjectMetadata,
|
||||
otherObjectFlatFieldMetadatas,
|
||||
} = fromUpdateObjectInputToFlatObjectMetadata({
|
||||
existingFlatObjectMetadataMaps,
|
||||
updateObjectInput,
|
||||
});
|
||||
|
||||
const impactedObjectMetadataIds = [
|
||||
...new Set([
|
||||
optimisticallyUpdatedFlatObjectMetadata.id,
|
||||
...otherObjectFlatFieldMetadatas.map(
|
||||
(flatFieldMetadata) => flatFieldMetadata.objectMetadataId,
|
||||
),
|
||||
]),
|
||||
];
|
||||
const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
|
||||
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
|
||||
objectMetadataIds: [optimisticallyUpdatedFlatObjectMetadata.id],
|
||||
objectMetadataIds: impactedObjectMetadataIds,
|
||||
});
|
||||
const toFlatObjectMetadataMaps =
|
||||
const toFlatObjectMetadataMaps = otherObjectFlatFieldMetadatas.reduce(
|
||||
(flatObjectMetadataMaps, flatFieldMetadata) =>
|
||||
replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
|
||||
flatFieldMetadata,
|
||||
flatObjectMetadataMaps,
|
||||
}),
|
||||
replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
|
||||
flatObjectMetadata: optimisticallyUpdatedFlatObjectMetadata,
|
||||
flatObjectMetadataMaps: fromFlatObjectMetadataMaps,
|
||||
});
|
||||
|
||||
}),
|
||||
);
|
||||
const validateAndBuildResult =
|
||||
await this.workspaceMigrationValidateBuildAndRunService.validateBuildAndRunWorkspaceMigration(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user