File size: 2,110 Bytes
d9494a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import {
  FieldMetadataType,
  type FieldMetadataDefaultValueForAnyType,
} from 'twenty-shared/types';
import { assertUnreachable } from 'twenty-shared/utils';

import { CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type';

import { nullifyEmptyActorDefaultValue } from './nullify-empty-actor-default-value.util';
import { nullifyEmptyAddressDefaultValue } from './nullify-empty-address-default-value.util';
import { nullifyEmptyCurrencyDefaultValue } from './nullify-empty-currency-default-value.util';
import { nullifyEmptyEmailsDefaultValue } from './nullify-empty-emails-default-value.util';
import { nullifyEmptyFullNameDefaultValue } from './nullify-empty-full-name-default-value.util';
import { nullifyEmptyLinksDefaultValue } from './nullify-empty-links-default-value.util';
import { nullifyEmptyPhonesDefaultValue } from './nullify-empty-phones-default-value.util';
import { nullifyEmptyRichTextDefaultValue } from './nullify-empty-rich-text-default-value.util';

export const nullifyEmptyCompositeDefaultValue = ({
  defaultValue,
  fieldType,
}: {
  defaultValue: FieldMetadataDefaultValueForAnyType;
  fieldType: CompositeFieldMetadataType;
}): FieldMetadataDefaultValueForAnyType => {
  switch (fieldType) {
    case FieldMetadataType.PHONES:
      return nullifyEmptyPhonesDefaultValue(defaultValue);
    case FieldMetadataType.EMAILS:
      return nullifyEmptyEmailsDefaultValue(defaultValue);
    case FieldMetadataType.LINKS:
      return nullifyEmptyLinksDefaultValue(defaultValue);
    case FieldMetadataType.ADDRESS:
      return nullifyEmptyAddressDefaultValue(defaultValue);
    case FieldMetadataType.FULL_NAME:
      return nullifyEmptyFullNameDefaultValue(defaultValue);
    case FieldMetadataType.ACTOR:
      return nullifyEmptyActorDefaultValue(defaultValue);
    case FieldMetadataType.CURRENCY:
      return nullifyEmptyCurrencyDefaultValue(defaultValue);
    case FieldMetadataType.RICH_TEXT:
      return nullifyEmptyRichTextDefaultValue(defaultValue);
    default:
      assertUnreachable(fieldType);
  }
};