Object metadata API create one using workspace migration v2 (#13420)

# Introduction
In this PR we create basic transpilation methods and utils to handle
input to flat, entity to flat, object maps to flat. In order to
transpile everything into a common validation that will be implemented
in another PR

## FieldMetadataEntity typing
Added `never | null` to fields that should never be in order to ease
general abstracted method to pass null, as anw it's what is in the
database

## Todo
- ~~Create a feature flag~~
- Integration test for object creation through metadata api + pg col
introspection and snapshoting
This commit is contained in:
Paul Rastoin
2025-07-29 17:47:28 +02:00
committed by GitHub
parent 600df4fd90
commit c1bf0a1fbf
66 changed files with 1224 additions and 164 deletions
@@ -0,0 +1,56 @@
import { faker } from '@faker-js/faker';
import { FieldMetadataType } from 'twenty-shared/types';
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
type FlatFieldMetadataOverrides<
T extends FieldMetadataType = FieldMetadataType,
> = Required<
Pick<FlatFieldMetadata<T>, 'uniqueIdentifier' | 'objectMetadataId' | 'type'>
> &
Partial<FlatFieldMetadata<T>>;
export const getFlatFieldMetadataMock = <T extends FieldMetadataType>(
overrides: FlatFieldMetadataOverrides<T>,
): FlatFieldMetadata => {
const createdAt = faker.date.anytime();
return {
defaultValue: null,
options: null,
settings: null,
createdAt,
description: 'default flat field metadata description',
icon: 'icon',
id: faker.string.uuid(),
isActive: true,
isCustom: true,
name: 'flatFieldMetadataName',
label: 'flat field metadata label',
isNullable: true,
isUnique: false,
isLabelSyncedWithName: false,
isSystem: false,
standardId: null,
standardOverrides: null,
updatedAt: createdAt,
workspaceId: faker.string.uuid(),
flatRelationTargetFieldMetadata: null,
relationTargetFieldMetadataId: null,
flatRelationTargetObjectMetadata: null,
relationTargetObjectMetadataId: null,
...overrides,
};
};
export const getStandardFlatFieldMetadataMock = (
overrides: Omit<FlatFieldMetadataOverrides, 'isCustom' | 'isSystem'>,
) => {
return getFlatFieldMetadataMock({
standardId: faker.string.uuid(),
standardOverrides: {},
isCustom: false,
isSystem: true,
...overrides,
});
};