6e6f0af26e
* feat: add enum type (RATING, SELECT, MULTI_SELECT) feat: wip enum type feat: try to alter enum feat: wip enum feat: wip enum feat: schema-builder can handle enum fix: return default value in field metadata response * fix: create fieldMedata with options * fix: lint issues * fix: rename abstract factory * feat: drop `PHONE` and `EMAIL` fieldMetadata types * feat: drop `VARCHAR` fieldMetadata type and rely on `TEXT` * Revert "feat: drop `PHONE` and `EMAIL` fieldMetadata types" This reverts commit 3857539f7d42f17c81f6ab92a6db950140b3c8e5.
55 lines
1.3 KiB
TypeScript
55 lines
1.3 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 (
|
|
!Array.isArray(defaultValue) &&
|
|
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 (Array.isArray(defaultValue)) {
|
|
return defaultValue;
|
|
}
|
|
|
|
if (typeof defaultValue === 'object') {
|
|
return `'${JSON.stringify(defaultValue)}'`;
|
|
}
|
|
|
|
throw new BadRequestException('Invalid default value');
|
|
};
|