Files
twenty/server/src/metadata/field-metadata/utils/serialize-default-value.ts
T
Weiko bc579d64a6 Rename Money/Url to Currency/Link and remove snake_case from composite fields (#2536)
* Rename Money/Url to Currency/Link

* regenerate front types

* renaming money/url field types

* fix double text

* fix tests

* fix server tests

* fix generate-target-column-map

* fix currency convert

* fix: tests

---------

Co-authored-by: Jérémy Magrin <jeremy.magrin@gmail.com>
2023-11-17 10:31:17 +01:00

47 lines
1.2 KiB
TypeScript

import { BadRequestException } from '@nestjs/common';
import { FieldMetadataDefaultSerializableValue } from 'src/metadata/field-metadata/interfaces/field-metadata-default-value.interface';
export const serializeDefaultValue = (
defaultValue?: FieldMetadataDefaultSerializableValue,
) => {
if (defaultValue === undefined || defaultValue === null) {
return null;
}
// Dynamic default values
if (typeof defaultValue === 'object' && 'type' in defaultValue) {
switch (defaultValue.type) {
case 'uuid':
return 'public.uuid_generate_v4()';
case 'now':
return 'now()';
default:
throw new BadRequestException('Invalid dynamic default value type');
}
}
// Static default values
if (typeof defaultValue === 'string') {
return `'${defaultValue}'`;
}
if (typeof defaultValue === 'number') {
return defaultValue;
}
if (typeof defaultValue === 'boolean') {
return defaultValue;
}
if (defaultValue instanceof Date) {
return `'${defaultValue.toISOString()}'`;
}
if (typeof defaultValue === 'object') {
return `'${JSON.stringify(defaultValue)}'`;
}
throw new BadRequestException('Invalid default value');
};