Files
twenty/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts
T

60 lines
2.1 KiB
TypeScript

import { extractAndSanitizeObjectStringFields } from 'twenty-shared/utils';
import { type 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 { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
type GetDefaultFlatFieldMetadataArgs = {
fieldMetadataId: string;
createFieldInput: Omit<CreateFieldInput, 'workspaceId'>;
workspaceId: string;
};
export const getDefaultFlatFieldMetadata = ({
createFieldInput,
fieldMetadataId,
workspaceId,
}: GetDefaultFlatFieldMetadataArgs) => {
const { defaultValue, settings } = extractAndSanitizeObjectStringFields(
createFieldInput,
['defaultValue', 'settings'],
);
const createdAt = new Date();
return {
description: createFieldInput.description ?? null,
id: fieldMetadataId,
icon: createFieldInput.icon ?? null,
isActive: true,
isCustom: true,
isLabelSyncedWithName: createFieldInput.isLabelSyncedWithName ?? false,
isNullable: generateNullable(
createFieldInput.type,
createFieldInput.isNullable,
createFieldInput.isRemoteCreation,
),
isSystem: false,
isUnique: createFieldInput.isUnique ?? null,
label: createFieldInput.label ?? null,
name: createFieldInput.name ?? null,
objectMetadataId: createFieldInput.objectMetadataId,
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
standardId: null,
standardOverrides: null,
type: createFieldInput.type,
universalIdentifier: fieldMetadataId,
workspaceId,
flatRelationTargetFieldMetadata: null,
flatRelationTargetObjectMetadata: null,
options: null,
defaultValue: defaultValue ?? generateDefaultValue(createFieldInput.type),
settings: settings ?? null,
createdAt,
updatedAt: createdAt,
isUIReadOnly: createFieldInput.isUIReadOnly ?? false,
morphId: null,
} as const satisfies FlatFieldMetadata;
};