Remove field metadata interface references (#13305)

# Introduction
Following https://github.com/twentyhq/twenty/pull/13264
> After this PR merge will create a new one removing the type and
replacing it to FieldMetadataEntity.

This is it !
This commit is contained in:
Paul Rastoin
2025-07-21 13:57:14 +02:00
committed by GitHub
parent 47b60bd49f
commit 1dee9bc800
54 changed files with 167 additions and 223 deletions
@@ -1,7 +0,0 @@
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>;
@@ -1,8 +1,7 @@
import { IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface';
import { WorkspaceEntityDuplicateCriteria } from 'src/engine/api/graphql/workspace-query-builder/types/workspace-entity-duplicate-criteria.type';
import { FieldMetadataInterface } from './field-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
export interface ObjectMetadataInterface {
id: string;
@@ -15,7 +14,7 @@ export interface ObjectMetadataInterface {
description?: string;
icon: string;
targetTableName: string;
fields: FieldMetadataInterface[];
fields: FieldMetadataEntity[];
indexMetadatas: IndexMetadataInterface[];
isSystem: boolean;
isCustom: boolean;
@@ -7,7 +7,6 @@ import { assertUnreachable, isDefined } from 'twenty-shared/utils';
import { z } from 'zod';
import { FieldMetadataOptions } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-options.interface';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import {
@@ -15,6 +14,7 @@ import {
FieldMetadataDefaultOption,
} from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
import { UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -36,7 +36,7 @@ type FieldMetadataUpdateCreateInput = CreateFieldInput | UpdateFieldInput;
type ValidateEnumFieldMetadataArgs = {
existingFieldMetadata?: Pick<
FieldMetadataInterface,
FieldMetadataEntity,
'type' | 'isNullable' | 'defaultValue' | 'options'
>;
fieldMetadataInput: FieldMetadataUpdateCreateInput;
@@ -6,11 +6,10 @@ import { isDefined } from 'twenty-shared/utils';
import { Repository } from 'typeorm';
import { v4 } from 'uuid';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -163,7 +162,7 @@ export class FieldMetadataMorphRelationService {
async findCachedFieldMetadataMorphRelation(
fieldMetadataItems: Array<
Pick<
FieldMetadataInterface,
FieldMetadataEntity,
| 'id'
| 'type'
| 'objectMetadataId'
@@ -187,7 +186,7 @@ export class FieldMetadataMorphRelationService {
);
const fieldMetadataItemsAndMorphSiblings: Pick<
FieldMetadataInterface,
FieldMetadataEntity,
| 'id'
| 'type'
| 'objectMetadataId'
@@ -8,7 +8,6 @@ import { isDefined } from 'twenty-shared/utils';
import { Repository } from 'typeorm';
import { v4 } from 'uuid';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
@@ -28,7 +27,7 @@ import { getObjectMetadataFromObjectMetadataItemWithFieldMaps } from 'src/engine
import { validateFieldNameAvailabilityOrThrow } from 'src/engine/metadata-modules/utils/validate-field-name-availability.utils';
import { validateMetadataNameOrThrow } from 'src/engine/metadata-modules/utils/validate-metadata-name.utils';
import { computeMetadataNameFromLabel } from 'src/engine/metadata-modules/utils/validate-name-and-label-are-sync-or-throw.util';
import { isFieldMetadataInterfaceOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service';
export class RelationCreationPayloadValidation {
@@ -50,7 +49,7 @@ type ValidateFieldMetadataArgs<T extends UpdateFieldInput | CreateFieldInput> =
fieldMetadataType: FieldMetadataType;
fieldMetadataInput: T;
objectMetadata: ObjectMetadataItemWithFieldMaps;
existingFieldMetadata?: FieldMetadataInterface;
existingFieldMetadata?: FieldMetadataEntity;
objectMetadataMaps: ObjectMetadataMaps;
};
@@ -243,7 +242,7 @@ export class FieldMetadataRelationService {
async findCachedFieldMetadataRelation(
fieldMetadataItems: Array<
Pick<
FieldMetadataInterface,
FieldMetadataEntity,
| 'id'
| 'type'
| 'objectMetadataId'
@@ -324,11 +323,11 @@ export class FieldMetadataRelationService {
joinColumnName: string;
}) {
const isRelation =
isFieldMetadataInterfaceOfType(
isFieldMetadataEntityOfType(
fieldMetadataInput,
FieldMetadataType.RELATION,
) ||
isFieldMetadataInterfaceOfType(
isFieldMetadataEntityOfType(
fieldMetadataInput,
FieldMetadataType.MORPH_RELATION,
);
@@ -15,10 +15,10 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { FieldMetadataSettings } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -34,7 +34,7 @@ type ValidateFieldMetadataArgs = {
fieldMetadataType: FieldMetadataType;
fieldMetadataInput: CreateFieldInput | UpdateFieldInput;
objectMetadata: ObjectMetadataItemWithFieldMaps;
existingFieldMetadata?: FieldMetadataInterface;
existingFieldMetadata?: FieldMetadataEntity;
};
enum ValueType {
@@ -7,16 +7,15 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { DataSource, FindOneOptions, In, Repository } from 'typeorm';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { DeleteOneFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/delete-field.input';
import { UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -107,7 +106,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
{ workspaceId: fieldMetadataInput.workspaceId },
);
let existingFieldMetadata: FieldMetadataInterface | undefined;
let existingFieldMetadata: FieldMetadataEntity | undefined;
for (const objectMetadataItem of Object.values(
objectMetadataMaps.byId,
@@ -1,14 +1,13 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { FieldStandardOverridesDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-standard-overrides.dto';
import { UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
export const buildUpdatableStandardFieldInput = (
fieldMetadataInput: UpdateFieldInput,
existingFieldMetadata: Pick<
FieldMetadataInterface,
FieldMetadataEntity,
'type' | 'isNullable' | 'defaultValue' | 'options'
>,
) => {
@@ -1,5 +1,4 @@
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -7,10 +6,7 @@ import {
type CheckCanDeactivateFieldOptions = {
labelIdentifierFieldMetadataId: string;
existingFieldMetadata: Pick<
FieldMetadataInterface,
'id' | 'isSystem' | 'name'
>;
existingFieldMetadata: Pick<FieldMetadataEntity, 'id' | 'isSystem' | 'name'>;
};
export const checkCanDeactivateFieldOrThrow = ({
@@ -1,8 +1,8 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { CompositeProperty } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -22,12 +22,12 @@ export function computeColumnName(
options?: ComputeColumnNameOptions,
): string;
export function computeColumnName<T extends FieldMetadataType>(
fieldMetadata: FieldMetadataInterface<T>,
ioptions?: ComputeColumnNameOptions,
fieldMetadata: FieldMetadataEntity<T>,
options?: ComputeColumnNameOptions,
): string;
// TODO: If we need to implement custom name logic for columns, we can do it here
export function computeColumnName<T extends FieldMetadataType>(
fieldMetadataOrFieldName: FieldMetadataInterface<T> | string,
fieldMetadataOrFieldName: FieldMetadataEntity<T> | string,
options?: ComputeColumnNameOptions,
): string {
const generateName = (name: string) => {
@@ -52,13 +52,13 @@ export function computeCompositeColumnName(
compositeProperty: CompositeProperty,
): string;
export function computeCompositeColumnName<T extends FieldMetadataType>(
fieldMetadata: FieldTypeAndNameMetadata | FieldMetadataInterface<T>,
fieldMetadata: FieldTypeAndNameMetadata | FieldMetadataEntity<T>,
compositeProperty: CompositeProperty,
): string;
export function computeCompositeColumnName<T extends FieldMetadataType>(
fieldMetadataOrFieldName:
| FieldTypeAndNameMetadata
| FieldMetadataInterface<T>
| FieldMetadataEntity<T>
| string,
compositeProperty: CompositeProperty,
): string {
@@ -1,15 +1,13 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
export type SelectOrMultiSelectFieldMetadataEntity = FieldMetadataEntity<
FieldMetadataType.SELECT | FieldMetadataType.MULTI_SELECT
>;
export const isSelectOrMultiSelectFieldMetadata = (
fieldMetadata: FieldMetadataInterface,
): fieldMetadata is FieldMetadataInterface &
fieldMetadata: FieldMetadataEntity,
): fieldMetadata is FieldMetadataEntity &
SelectOrMultiSelectFieldMetadataEntity => {
return [FieldMetadataType.SELECT, FieldMetadataType.MULTI_SELECT].includes(
fieldMetadata.type,