diff --git a/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts b/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts index d64b999ba..9deefbd33 100644 --- a/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts +++ b/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts @@ -25,6 +25,7 @@ import { UpdateFieldInput } from 'src/metadata/field-metadata/dtos/update-field. import { WorkspaceMigrationFactory } from 'src/metadata/workspace-migration/workspace-migration.factory'; import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util'; import { generateMigrationName } from 'src/metadata/workspace-migration/utils/generate-migration-name.util'; +import { generateNullable } from 'src/metadata/field-metadata/utils/generate-nullable'; import { FieldMetadataEntity, @@ -102,6 +103,10 @@ export class FieldMetadataService extends TypeOrmQueryService { + it('should generate a nullable value false for TEXT, EMAIL, PHONE no matter what the input is', () => { + expect(generateNullable(FieldMetadataType.TEXT, false)).toEqual(false); + expect(generateNullable(FieldMetadataType.PHONE, false)).toEqual(false); + expect(generateNullable(FieldMetadataType.EMAIL, false)).toEqual(false); + + expect(generateNullable(FieldMetadataType.TEXT, true)).toEqual(false); + expect(generateNullable(FieldMetadataType.PHONE, true)).toEqual(false); + expect(generateNullable(FieldMetadataType.EMAIL, true)).toEqual(false); + + expect(generateNullable(FieldMetadataType.TEXT)).toEqual(false); + expect(generateNullable(FieldMetadataType.PHONE)).toEqual(false); + expect(generateNullable(FieldMetadataType.EMAIL)).toEqual(false); + }); + + it('should should return true if no input is given', () => { + expect(generateNullable(FieldMetadataType.DATE_TIME)).toEqual(true); + }); + + it('should should return the input value if the input value is given', () => { + expect(generateNullable(FieldMetadataType.DATE_TIME, true)).toEqual(true); + expect(generateNullable(FieldMetadataType.DATE_TIME, false)).toEqual(false); + }); +}); diff --git a/packages/twenty-server/src/metadata/field-metadata/utils/generate-nullable.ts b/packages/twenty-server/src/metadata/field-metadata/utils/generate-nullable.ts new file mode 100644 index 000000000..4f0c0c94e --- /dev/null +++ b/packages/twenty-server/src/metadata/field-metadata/utils/generate-nullable.ts @@ -0,0 +1,15 @@ +import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; + +export function generateNullable( + type: FieldMetadataType, + inputNullableValue?: boolean, +): boolean { + switch (type) { + case FieldMetadataType.TEXT: + case FieldMetadataType.PHONE: + case FieldMetadataType.EMAIL: + return false; + default: + return inputNullableValue ?? true; + } +}