Add fullName field metadata type (#2563)
* Add fullName field metadata type * update seeds
This commit is contained in:
@ -30,6 +30,7 @@ export enum FieldMetadataType {
|
||||
LINK = 'LINK',
|
||||
CURRENCY = 'CURRENCY',
|
||||
RELATION = 'RELATION',
|
||||
FULL_NAME = 'FULL_NAME',
|
||||
}
|
||||
|
||||
@Entity('fieldMetadata')
|
||||
|
||||
@ -33,11 +33,17 @@ interface FieldMetadataDefaultValueCurrency {
|
||||
currencyCode: string;
|
||||
}
|
||||
|
||||
interface FieldMetadataDefaultValueFullName {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
type AllFieldMetadataDefaultValueTypes =
|
||||
| FieldMetadataScalarDefaultValue
|
||||
| FieldMetadataDynamicDefaultValue
|
||||
| FieldMetadataDefaultValueLink
|
||||
| FieldMetadataDefaultValueCurrency;
|
||||
| FieldMetadataDefaultValueCurrency
|
||||
| FieldMetadataDefaultValueFullName;
|
||||
|
||||
type FieldMetadataDefaultValueMapping = {
|
||||
[FieldMetadataType.UUID]: FieldMetadataDefaultValueString;
|
||||
@ -51,6 +57,7 @@ type FieldMetadataDefaultValueMapping = {
|
||||
[FieldMetadataType.ENUM]: FieldMetadataDefaultValueString;
|
||||
[FieldMetadataType.LINK]: FieldMetadataDefaultValueLink;
|
||||
[FieldMetadataType.CURRENCY]: FieldMetadataDefaultValueCurrency;
|
||||
[FieldMetadataType.FULL_NAME]: FieldMetadataDefaultValueFullName;
|
||||
};
|
||||
|
||||
type DefaultValueByFieldMetadata<T extends FieldMetadataType | 'default'> = [
|
||||
|
||||
@ -14,6 +14,11 @@ export interface FieldMetadataTargetColumnMapCurrency {
|
||||
currencyCode: string;
|
||||
}
|
||||
|
||||
export interface FieldMetadataTargetColumnMapFullName {
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
|
||||
type AllFieldMetadataTypes = {
|
||||
[key: string]: string;
|
||||
};
|
||||
@ -21,6 +26,7 @@ type AllFieldMetadataTypes = {
|
||||
type FieldMetadataTypeMapping = {
|
||||
[FieldMetadataType.LINK]: FieldMetadataTargetColumnMapLink;
|
||||
[FieldMetadataType.CURRENCY]: FieldMetadataTargetColumnMapCurrency;
|
||||
[FieldMetadataType.FULL_NAME]: FieldMetadataTargetColumnMapFullName;
|
||||
};
|
||||
|
||||
type TypeByFieldMetadata<T extends FieldMetadataType | 'default'> =
|
||||
|
||||
@ -123,6 +123,25 @@ export function convertFieldMetadataToColumnActions(
|
||||
},
|
||||
];
|
||||
}
|
||||
case FieldMetadataType.FULL_NAME: {
|
||||
const defaultValue =
|
||||
fieldMetadata.defaultValue as FieldMetadataDefaultValue<FieldMetadataType.FULL_NAME>;
|
||||
|
||||
return [
|
||||
{
|
||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
||||
columnName: fieldMetadata.targetColumnMap.firstName,
|
||||
columnType: 'varchar',
|
||||
defaultValue: serializeDefaultValue(defaultValue?.firstName),
|
||||
},
|
||||
{
|
||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
||||
columnName: fieldMetadata.targetColumnMap.lastName,
|
||||
columnType: 'varchar',
|
||||
defaultValue: serializeDefaultValue(defaultValue?.lastName),
|
||||
},
|
||||
];
|
||||
}
|
||||
default:
|
||||
throw new Error(`Unknown type ${fieldMetadata.type}`);
|
||||
}
|
||||
|
||||
@ -39,6 +39,12 @@ export function generateTargetColumnMap(
|
||||
amountMicros: `${columnName}AmountMicros`,
|
||||
currencyCode: `${columnName}CurrencyCode`,
|
||||
};
|
||||
case FieldMetadataType.FULL_NAME:
|
||||
return {
|
||||
firstName: `${columnName}FirstName`,
|
||||
lastName: `${columnName}LastName`,
|
||||
};
|
||||
|
||||
default:
|
||||
throw new BadRequestException(`Unknown type ${type}`);
|
||||
}
|
||||
|
||||
@ -72,6 +72,15 @@ export const validateDefaultValueBasedOnType = (
|
||||
typeof defaultValue.currencyCode === 'string'
|
||||
);
|
||||
|
||||
case FieldMetadataType.FULL_NAME:
|
||||
return (
|
||||
typeof defaultValue === 'object' &&
|
||||
'firstName' in defaultValue &&
|
||||
typeof defaultValue.firstName === 'string' &&
|
||||
'lastName' in defaultValue &&
|
||||
typeof defaultValue.lastName === 'string'
|
||||
);
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -13,12 +13,12 @@ export const addPersonTable: WorkspaceMigrationTableAction[] = [
|
||||
action: 'alter',
|
||||
columns: [
|
||||
{
|
||||
columnName: 'firstName',
|
||||
columnName: 'nameFirstName',
|
||||
columnType: 'varchar',
|
||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
||||
},
|
||||
{
|
||||
columnName: 'lastName',
|
||||
columnName: 'nameLastName',
|
||||
columnType: 'varchar',
|
||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user