Deprecate FieldMetadataInterface (#13264)

# Introduction

From the moment replaced the FieldMetadataInterface definition to:
```ts
import { FieldMetadataType } from 'twenty-shared/types';

import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';

export type FieldMetadataInterface<
  T extends FieldMetadataType = FieldMetadataType,
> = FieldMetadataEntity<T>;
```
After this PR merge will create a new one removing the type and
replacing it to `FieldMetadataEntity`.
Did not renamed it here to avoid conflicts on naming + type issues fixs
within the same PR

## Field metadata entity RELATION or MORPH
Relations fields cannot be null for those field metadata entity instance
anymore, but are never for the others see
`packages/twenty-server/src/engine/metadata-modules/field-metadata/types/field-metadata-entity-test.type.ts`
( introduced TypeScript tests )

## Concerns
- TS_VECTOR is the most at risk with the `generatedType` and
`asExpression` removal from interface

## What's next
- `FielMetadataInterface` removal and rename ( see introduction )
- Depcrecating `ObjectMetadataInterface`
- Refactor `FieldMetadataEntity` optional fiels to be nullable only
- TO DIG `never` occurences on settings, defaultValue etc
- Some interfaces will be replaced by the `FlatFieldMetadata` when
deprecating the current sync and comparators tools
This commit is contained in:
Paul Rastoin
2025-07-21 11:30:18 +02:00
committed by GitHub
parent c2a5f95675
commit 47b60bd49f
67 changed files with 1780 additions and 769 deletions
@@ -72,7 +72,7 @@ export class CompositeColumnActionFactory extends ColumnActionAbstractFactory<Co
columnType: fieldMetadataTypeToColumnType(property.type),
enum: enumOptions,
isNullable: fieldMetadata.isNullable || !property.isRequired,
isUnique: fieldMetadata.isUnique,
isUnique: fieldMetadata.isUnique ?? undefined,
defaultValue: serializedDefaultValue,
isArray:
property.type === FieldMetadataType.MULTI_SELECT || property.isArray,
@@ -13,14 +13,19 @@ import {
WorkspaceMigrationColumnCreate,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
export type TsVectorFieldMetadataType = FieldMetadataType.TS_VECTOR;
export type TsVectorFieldMetadata =
FieldMetadataInterface<FieldMetadataType.TS_VECTOR> & {
generatedType?: 'STORED' | 'VIRTUAL';
asExpression?: string;
};
export type TsVectorFieldMetadataType = FieldMetadataType.TS_VECTOR;
@Injectable()
export class TsVectorColumnActionFactory extends ColumnActionAbstractFactory<TsVectorFieldMetadataType> {
protected readonly logger = new Logger(TsVectorColumnActionFactory.name);
handleCreateAction(
fieldMetadata: FieldMetadataInterface<TsVectorFieldMetadataType>,
fieldMetadata: TsVectorFieldMetadata,
): WorkspaceMigrationColumnCreate[] {
return [
{
@@ -37,8 +42,8 @@ export class TsVectorColumnActionFactory extends ColumnActionAbstractFactory<TsV
}
handleAlterAction(
currentFieldMetadata: FieldMetadataInterface<TsVectorFieldMetadataType>,
alteredFieldMetadata: FieldMetadataInterface<TsVectorFieldMetadataType>,
currentFieldMetadata: TsVectorFieldMetadata,
alteredFieldMetadata: TsVectorFieldMetadata,
): WorkspaceMigrationColumnAlter[] {
return [
{
@@ -11,7 +11,10 @@ import { CompositeColumnActionFactory } from 'src/engine/metadata-modules/worksp
import { EnumColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory';
import { MorphRelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory';
import { RelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory';
import { TsVectorColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory';
import {
TsVectorColumnActionFactory,
TsVectorFieldMetadata,
} from 'src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory';
import {
WorkspaceMigrationColumnAction,
WorkspaceMigrationColumnActionType,
@@ -115,9 +118,9 @@ export class WorkspaceMigrationFactory {
]);
}
createColumnActions(
createColumnActions<T extends FieldMetadataType = FieldMetadataType>(
action: WorkspaceMigrationColumnActionType.CREATE,
fieldMetadata: FieldMetadataInterface,
fieldMetadata: FieldMetadataInterface<T>,
): WorkspaceMigrationColumnAction[];
createColumnActions(
@@ -126,6 +129,12 @@ export class WorkspaceMigrationFactory {
alteredFieldMetadata: FieldMetadataInterface,
): WorkspaceMigrationColumnAction[];
createColumnActions(
action: WorkspaceMigrationColumnActionType.ALTER,
currentFieldMetadata: FieldMetadataInterface,
alteredFieldMetadata: TsVectorFieldMetadata,
): WorkspaceMigrationColumnAction[];
createColumnActions(
action:
| WorkspaceMigrationColumnActionType.CREATE