Fix nullable being set to null for text field (#4239)
This commit is contained in:
@ -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 { WorkspaceMigrationFactory } from 'src/metadata/workspace-migration/workspace-migration.factory';
|
||||||
import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util';
|
import { computeObjectTargetTable } from 'src/workspace/utils/compute-object-target-table.util';
|
||||||
import { generateMigrationName } from 'src/metadata/workspace-migration/utils/generate-migration-name.util';
|
import { generateMigrationName } from 'src/metadata/workspace-migration/utils/generate-migration-name.util';
|
||||||
|
import { generateNullable } from 'src/metadata/field-metadata/utils/generate-nullable';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
FieldMetadataEntity,
|
FieldMetadataEntity,
|
||||||
@ -102,6 +103,10 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
|
|||||||
true,
|
true,
|
||||||
fieldMetadataInput.name,
|
fieldMetadataInput.name,
|
||||||
),
|
),
|
||||||
|
isNullable: generateNullable(
|
||||||
|
fieldMetadataInput.type,
|
||||||
|
fieldMetadataInput.isNullable,
|
||||||
|
),
|
||||||
defaultValue:
|
defaultValue:
|
||||||
fieldMetadataInput.defaultValue ??
|
fieldMetadataInput.defaultValue ??
|
||||||
generateDefaultValue(fieldMetadataInput.type),
|
generateDefaultValue(fieldMetadataInput.type),
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||||
|
import { generateNullable } from 'src/metadata/field-metadata/utils/generate-nullable';
|
||||||
|
|
||||||
|
describe('generateNullable', () => {
|
||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user