Spaces:
Build error
Build error
twenty / packages /twenty-server /src /engine /twenty-orm /utils /validate-enum-value-compatibility.util.ts
| import { FieldMetadataType } from 'twenty-shared/types'; | |
| import { isDefined } from 'twenty-shared/utils'; | |
| import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; | |
| type ValidateEnumValueCompatibilityArgs = { | |
| workspaceMemberFieldMetadata: FlatFieldMetadata; | |
| targetFieldMetadata: FlatFieldMetadata; | |
| predicateValue: unknown; | |
| }; | |
| export const validateEnumValueCompatibility = ({ | |
| workspaceMemberFieldMetadata, | |
| targetFieldMetadata, | |
| predicateValue, | |
| }: ValidateEnumValueCompatibilityArgs): boolean => { | |
| const isWorkspaceMemberFieldEnum = | |
| workspaceMemberFieldMetadata.type === FieldMetadataType.SELECT || | |
| workspaceMemberFieldMetadata.type === FieldMetadataType.MULTI_SELECT; | |
| const isTargetFieldEnum = | |
| targetFieldMetadata.type === FieldMetadataType.SELECT || | |
| targetFieldMetadata.type === FieldMetadataType.MULTI_SELECT; | |
| if (!isWorkspaceMemberFieldEnum || !isTargetFieldEnum) { | |
| return true; | |
| } | |
| const targetFieldOptions = targetFieldMetadata.options || []; | |
| const validTargetValues = new Set( | |
| targetFieldOptions.map((option) => option.value), | |
| ); | |
| if (validTargetValues.size === 0) { | |
| return true; | |
| } | |
| const valuesToCheck = Array.isArray(predicateValue) | |
| ? predicateValue | |
| : [predicateValue]; | |
| const allValuesAreValid = valuesToCheck.every( | |
| (value) => isDefined(value) && validTargetValues.has(String(value)), | |
| ); | |
| return allValuesAreValid; | |
| }; | |