Fix build field order delete object refactor (#13965)

# Introduction
- Decided to remove delete_field resulting from delete_object as ON
CASCADE will handle it
- Still ordering delete_field in first place in order to handle
relationTargetFieldMetadata deletion on passed delete_object that
contains relation field
This commit is contained in:
Paul Rastoin
2025-08-18 18:38:43 +02:00
committed by GitHub
parent 6c23c9c46b
commit 9838dc611b
6 changed files with 35 additions and 231 deletions
@@ -2881,71 +2881,6 @@ exports[`Workspace migration builder object actions test suite It should build a
exports[`Workspace migration builder object actions test suite It should build a delete_object action with custom deactivated object 1`] = `
[
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"objectMetadataId": Any<String>,
"type": "delete_object",
@@ -2955,141 +2890,6 @@ exports[`Workspace migration builder object actions test suite It should build a
exports[`Workspace migration builder object actions test suite It should build a delete_object action with standard activated object 1`] = `
[
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"fieldMetadataId": Any<String>,
"objectMetadataId": Any<String>,
"type": "delete_field",
},
{
"objectMetadataId": Any<String>,
"type": "delete_object",
@@ -35,7 +35,6 @@ const DELETE_OBJECT_TEST_CASES: WorkspaceMigrationBuilderTestCase[] = [
},
expectedActionsTypeCounter: {
deleteObject: 1,
deleteField: ROCKET_FLAT_OBJECT_MOCK.flatFieldMetadatas.length,
},
},
},
@@ -58,7 +57,6 @@ const DELETE_OBJECT_TEST_CASES: WorkspaceMigrationBuilderTestCase[] = [
},
expectedActionsTypeCounter: {
deleteObject: 1,
deleteField: COMPANY_FLAT_OBJECT_MOCK.flatFieldMetadatas.length,
},
},
},
@@ -12,7 +12,6 @@ import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/work
import { WorkspaceMigrationV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2';
import { computeUpdatedObjectMetadataDeletedCreatedUpdatedFieldMatrix } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/compute-updated-object-metadata-deleted-created-updated-field-matrix.util';
import { computeUpdatedObjectMetadataDeletedCreatedUpdatedIndexMatrix } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/compute-updated-object-metadata-deleted-created-updated-index-matrix.util';
import { getWorkspaceMigrationV2FieldDeleteAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/get-workspace-migration-v2-field-actions';
import { getWorkspaceMigrationV2CreateIndexAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/get-workspace-migration-v2-index-actions';
import { buildWorkspaceMigrationIndexActions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-v2-index-actions-builder';
@@ -108,18 +107,6 @@ export class WorkspaceMigrationBuilderV2Service {
),
);
const deletedObjectWorkspaceMigrationDeleteFieldActions =
buildOptions.inferDeletionFromMissingObjectFieldIndex
? deletedFlatObjectMetadatas.flatMap((flatObjectMetadata) =>
flatObjectMetadata.flatFieldMetadatas.map((flatFieldMetadata) =>
getWorkspaceMigrationV2FieldDeleteAction({
flatFieldMetadata,
flatObjectMetadata,
}),
),
)
: [];
const indexWorkspaceMigrationActions = buildWorkspaceMigrationIndexActions({
objectMetadataDeletedCreatedUpdatedIndex,
inferDeletionFromMissingObjectFieldIndex:
@@ -144,10 +131,13 @@ export class WorkspaceMigrationBuilderV2Service {
workspaceMigration: {
workspaceId,
actions: [
...deletedObjectWorkspaceMigrationDeleteFieldActions,
...objectActionsValidateAndBuildResult.successful,
...fieldActionsValidateAndBuildResult.deleted,
...objectActionsValidateAndBuildResult.deleted,
...objectActionsValidateAndBuildResult.created,
...objectActionsValidateAndBuildResult.updated,
...fieldActionsValidateAndBuildResult.created,
...fieldActionsValidateAndBuildResult.updated,
...createdObjectMetadataCreateIndexActions,
...fieldActionsValidateAndBuildResult.successful,
...indexWorkspaceMigrationActions,
],
},
@@ -55,7 +55,9 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
const validateAndBuildResult: ValidateAndBuildMetadataResult<WorkspaceMigrationFieldActionV2> =
{
failed: [],
successful: [],
created: [],
deleted: [],
updated: [],
optimisticFlatObjectMetadataMaps: structuredClone(
fromFlatObjectMetadataMaps,
),
@@ -102,7 +104,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
validateAndBuildResult.optimisticFlatObjectMetadataMaps,
});
validateAndBuildResult.successful.push({
validateAndBuildResult.updated.push({
type: 'update_field',
fieldMetadataId,
objectMetadataId,
@@ -156,7 +158,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
flatObjectMetadata,
});
validateAndBuildResult.successful.push(createFieldAction);
validateAndBuildResult.created.push(createFieldAction);
}
for (const flatFieldMetadataToDelete of buildOptions.inferDeletionFromMissingObjectFieldIndex
@@ -189,7 +191,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
flatObjectMetadata,
});
validateAndBuildResult.successful.push(deleteFieldAction);
validateAndBuildResult.deleted.push(deleteFieldAction);
}
return validateAndBuildResult;
@@ -206,7 +208,9 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
let validateAndBuildResult: ValidateAndBuildMetadataResult<WorkspaceMigrationFieldActionV2> =
{
failed: [],
successful: [],
created: [],
deleted: [],
updated: [],
optimisticFlatObjectMetadataMaps: structuredClone(
fromFlatObjectMetadataMaps,
),
@@ -235,9 +239,17 @@ export class WorkspaceMigrationV2FieldActionsBuilderService {
...validateAndBuildResult.failed,
...flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.failed,
],
successful: [
...validateAndBuildResult.successful,
...flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.successful,
created: [
...validateAndBuildResult.created,
...flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.created,
],
deleted: [
...validateAndBuildResult.deleted,
...flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.deleted,
],
updated: [
...validateAndBuildResult.updated,
...flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.updated,
],
optimisticFlatObjectMetadataMaps:
flatObjectMetadataFlatFieldMatrixValidateAndBuildResult.optimisticFlatObjectMetadataMaps,
@@ -53,7 +53,9 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService {
const validateAndBuildResult: ValidateAndBuildMetadataResult<WorkspaceMigrationObjectActionV2> =
{
failed: [],
successful: [],
created: [],
deleted: [],
updated: [],
optimisticFlatObjectMetadataMaps: structuredClone(
fromFlatObjectMetadataMaps,
),
@@ -95,7 +97,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService {
createFieldActions,
});
validateAndBuildResult.successful.push(createObjectAction);
validateAndBuildResult.created.push(createObjectAction);
}
for (const flatObjectMetadataToDelete of buildOptions.inferDeletionFromMissingObjectFieldIndex
@@ -127,7 +129,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService {
flatObjectMetadataToDelete,
);
validateAndBuildResult.successful.push(deleteObjectAction);
validateAndBuildResult.deleted.push(deleteObjectAction);
}
for (const {
@@ -170,7 +172,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService {
updates: objectUpdatedProperties,
};
validateAndBuildResult.successful.push(updateObjectAction);
validateAndBuildResult.updated.push(updateObjectAction);
}
return validateAndBuildResult;
@@ -10,6 +10,8 @@ export type ValidateAndBuildMetadataResult<
| FailedFlatFieldMetadataValidationExceptions
| FailedFlatObjectMetadataValidationExceptions
)[];
successful: T[];
created: T[];
deleted: T[];
updated: T[];
optimisticFlatObjectMetadataMaps: FlatObjectMetadataMaps;
};