eab72d8e67
# Introduction ```ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-field-metadata-in-flat-object-metadata-maps.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-object-metadata-in-flat-object-metadata-maps.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts PASS twenty-server src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts =============================== Coverage summary =============================== Statements : 0.43% ( 159/36564 ) Branches : 0.16% ( 26/16182 ) Functions : 0.27% ( 25/9110 ) Lines : 0.4% ( 142/35006 ) ================================================================================ Test Suites: 8 passed, 8 total Tests: 20 passed, 20 total Snapshots: 9 passed, 9 total Time: 7.639 s ``` ## Tests utils Introduced three tests utils: - expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util - expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util - expect-to-be-defined.util
51 lines
2.0 KiB
TypeScript
51 lines
2.0 KiB
TypeScript
import { isDefined, removePropertiesFromRecord } from 'twenty-shared/utils';
|
|
|
|
import {
|
|
FlatObjectMetadataMapsException,
|
|
FlatObjectMetadataMapsExceptionCode,
|
|
} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
|
|
import { FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
|
|
|
|
type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
|
|
fieldMetadataId: string;
|
|
flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
|
|
};
|
|
export const deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow = ({
|
|
flatObjectMetadataWithFlatFieldMaps,
|
|
fieldMetadataId: fieldMetadataIdToRemove,
|
|
}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
|
|
const flatFieldMetadataToRemove =
|
|
flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataIdToRemove];
|
|
|
|
if (!isDefined(flatFieldMetadataToRemove)) {
|
|
throw new FlatObjectMetadataMapsException(
|
|
'deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found',
|
|
FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_NOT_FOUND,
|
|
);
|
|
}
|
|
|
|
const {
|
|
fieldIdByName,
|
|
fieldsById,
|
|
flatFieldMetadatas,
|
|
fieldIdByJoinColumnName,
|
|
} = flatObjectMetadataWithFlatFieldMaps;
|
|
const updatedFieldIdByJoinColumnName = Object.entries(
|
|
fieldIdByJoinColumnName,
|
|
).filter(([_joinColumnName, fieldId]) => fieldId !== fieldMetadataIdToRemove);
|
|
|
|
return {
|
|
...flatObjectMetadataWithFlatFieldMaps,
|
|
fieldIdByJoinColumnName: Object.fromEntries(updatedFieldIdByJoinColumnName),
|
|
fieldIdByName: removePropertiesFromRecord(fieldIdByName, [
|
|
flatFieldMetadataToRemove.name,
|
|
]),
|
|
fieldsById: removePropertiesFromRecord(fieldsById, [
|
|
fieldMetadataIdToRemove,
|
|
]),
|
|
flatFieldMetadatas: flatFieldMetadatas.filter(
|
|
(flatFieldMetadata) => flatFieldMetadata.id !== fieldMetadataIdToRemove,
|
|
),
|
|
};
|
|
};
|