Feat workspace migration maintains flat object metadata maps (#13620)

# Introduction
The workspace migration runner v2 now computes the next
flatObjectMetadataMaps post current ws migration action has been run
So the following one have an up to date informations

## Still TODO
~~Remove any contextual information from workspace migration v2 and
consume the optimistic cache to retrieve them~~

## Next steps
- Create flat-object-metadata-maps testing toolbox and flat-object/field
testing toolbox
- Implement strong coverage on every created utils/transpiler and
applyWorkspaceMigrationAction method
This commit is contained in:
Paul Rastoin
2025-08-06 15:10:14 +02:00
committed by GitHub
parent e1d169e51e
commit ca3383cd86
38 changed files with 897 additions and 592 deletions
@@ -1,7 +1,7 @@
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export const removeFlatFieldMetadataFromFlatObjectMetadatas = ({
export const deleteFlatFieldMetadataFromFlatObjectMetadatas = ({
flatFieldMetadata: flatFieldMetadataToRemove,
flatObjectMetadatas,
}: {
@@ -0,0 +1,24 @@
import { FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
import { addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export const fromFlatObjectMetadataToFlatObjectMetadataWithFlatFieldMaps = (
flatObjectMetadata: FlatObjectMetadata,
): FlatObjectMetadataWithFlatFieldMaps => {
const emptyFlatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps =
{
...flatObjectMetadata,
fieldIdByJoinColumnName: {},
fieldIdByName: {},
fieldsById: {},
};
return flatObjectMetadata.flatFieldMetadatas.reduce(
(flatObjectMetadataWithFlatFieldMaps, flatFieldMetadata) =>
addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow({
flatFieldMetadata,
flatObjectMetadataWithFlatFieldMaps,
}),
emptyFlatObjectMetadataWithFlatFieldMaps,
);
};
@@ -11,7 +11,10 @@ import { ToMerge } from 'src/engine/workspace-manager/workspace-migration-v2/wor
export const mergeTwoFlatObjectMetadatas = ({
destFlatObjectMetadatas,
toMergeFlatObjectMetadatas,
}: ToMerge<FlatObjectMetadata[], 'object'>): FlatObjectMetadata[] => {
}: ToMerge<
FlatObjectMetadata[],
'FlatObjectMetadatas'
>): FlatObjectMetadata[] => {
const initialObjectAccumulator = fromArrayToUniqueKeyRecord({
array: destFlatObjectMetadatas,
uniqueKey: 'uniqueIdentifier',