Spaces:
Build error
Build error
twenty / packages /twenty-server /src /engine /metadata-modules /flat-object-metadata /utils /sanitize-raw-update-object-input.ts
| import { extractAndSanitizeObjectStringFields } from 'twenty-shared/utils'; | |
| import { ALL_OVERRIDABLE_PROPERTIES_BY_METADATA_NAME } from 'src/engine/metadata-modules/flat-entity/constant/all-overridable-properties-by-metadata-name.constant'; | |
| import { FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-object-metadata/constants/flat-object-metadata-editable-properties.constant'; | |
| import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; | |
| import { type UpdateOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input'; | |
| import { | |
| ObjectMetadataException, | |
| ObjectMetadataExceptionCode, | |
| } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; | |
| import { belongsToTwentyStandardApp } from 'src/engine/metadata-modules/utils/belongs-to-twenty-standard-app.util'; | |
| import { computeMetadataOverridesBlob } from 'src/engine/metadata-modules/utils/compute-metadata-overrides-blob.util'; | |
| type SanitizeRawUpdateObjectInputArgs = { | |
| rawUpdateObjectInput: UpdateOneObjectInput; | |
| existingFlatObjectMetadata: FlatObjectMetadata; | |
| }; | |
| export const sanitizeRawUpdateObjectInput = ({ | |
| existingFlatObjectMetadata, | |
| rawUpdateObjectInput, | |
| }: SanitizeRawUpdateObjectInputArgs) => { | |
| const isStandardObject = belongsToTwentyStandardApp( | |
| existingFlatObjectMetadata, | |
| ); | |
| const updatedEditableObjectProperties = extractAndSanitizeObjectStringFields( | |
| rawUpdateObjectInput.update, | |
| [ | |
| ...new Set([ | |
| ...FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES.standard, | |
| ...FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES.custom, | |
| ]), | |
| ], | |
| ); | |
| if (!isStandardObject) { | |
| return { | |
| updatedEditableObjectProperties, | |
| overrides: null, | |
| }; | |
| } | |
| const invalidUpdatedProperties = Object.keys( | |
| updatedEditableObjectProperties, | |
| ).filter( | |
| (property) => | |
| !FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES.standard.includes( | |
| property as (typeof FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES.standard)[number], | |
| ), | |
| ); | |
| if (invalidUpdatedProperties.length > 0) { | |
| throw new ObjectMetadataException( | |
| `Cannot edit standard object metadata properties: ${invalidUpdatedProperties.join(', ')}`, | |
| ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT, | |
| ); | |
| } | |
| const { overrides, remainingProperties } = computeMetadataOverridesBlob({ | |
| overridableProperties: | |
| ALL_OVERRIDABLE_PROPERTIES_BY_METADATA_NAME.objectMetadata, | |
| updatedProperties: updatedEditableObjectProperties, | |
| existingEntity: existingFlatObjectMetadata, | |
| existingOverrides: existingFlatObjectMetadata.overrides, | |
| }); | |
| return { | |
| overrides, | |
| updatedEditableObjectProperties: remainingProperties, | |
| }; | |
| }; | |