43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
import { v4 } from 'uuid';
|
|
|
|
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
|
|
import { generateDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/generate-default-value';
|
|
import { generateNullable } from 'src/engine/metadata-modules/field-metadata/utils/generate-nullable';
|
|
import { prepareCustomFieldMetadataOptions } from 'src/engine/metadata-modules/field-metadata/utils/prepare-custom-field-metadata-for-options.util';
|
|
|
|
export const prepareCustomFieldMetadataForCreation = (
|
|
fieldMetadataInput: CreateFieldInput,
|
|
) => {
|
|
const options = fieldMetadataInput.options
|
|
? prepareCustomFieldMetadataOptions(fieldMetadataInput.options)
|
|
: undefined;
|
|
const defaultValue =
|
|
fieldMetadataInput.defaultValue ??
|
|
generateDefaultValue(fieldMetadataInput.type);
|
|
|
|
return {
|
|
id: v4(),
|
|
createdAt: new Date(),
|
|
updatedAt: new Date(),
|
|
name: fieldMetadataInput.name,
|
|
label: fieldMetadataInput.label,
|
|
icon: fieldMetadataInput.icon,
|
|
type: fieldMetadataInput.type,
|
|
isLabelSyncedWithName: fieldMetadataInput.isLabelSyncedWithName,
|
|
objectMetadataId: fieldMetadataInput.objectMetadataId,
|
|
workspaceId: fieldMetadataInput.workspaceId,
|
|
isNullable: generateNullable(
|
|
fieldMetadataInput.type,
|
|
fieldMetadataInput.isNullable,
|
|
fieldMetadataInput.isRemoteCreation,
|
|
),
|
|
relationTargetObjectMetadataId:
|
|
fieldMetadataInput?.relationCreationPayload?.targetObjectMetadataId,
|
|
defaultValue,
|
|
...options,
|
|
isActive: true,
|
|
isCustom: true,
|
|
settings: fieldMetadataInput.settings,
|
|
};
|
|
};
|