diff --git a/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts
index ca1feabbb0f..2eb1012bd92 100644
--- a/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts
@@ -15,14 +15,13 @@ import {
ServerlessFunctionManifest,
ServerlessFunctionTriggerManifest,
} from 'src/engine/core-modules/application/types/application.types';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { AgentService } from 'src/engine/metadata-modules/agent/agent.service';
+import { CronTriggerV2Service } from 'src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service';
+import { FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { DatabaseEventTriggerV2Service } from 'src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service';
import { FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
-import { CronTriggerV2Service } from 'src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service';
-import { FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
-import type { FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { ServerlessFunctionLayerService } from 'src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.service';
import { ServerlessFunctionV2Service } from 'src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service';
@@ -196,7 +195,9 @@ export class ApplicationSyncService {
existingFlatObjectMetadataMaps.byId,
).filter(
(obj) => isDefined(obj) && obj.applicationId === applicationId,
- ) as FlatObjectMetadataWithFlatFieldMaps[];
+ // TODO handle when migrating to trinite usage
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ ) as any[];
const objectsToSyncStandardIds = objectsToSync.map((obj) => obj.standardId);
diff --git a/packages/twenty-server/src/engine/core-modules/common/constant/all-flat-entity-maps-properties.constant.ts b/packages/twenty-server/src/engine/core-modules/common/constant/all-flat-entity-maps-properties.constant.ts
index ed0be7d99e2..1ba74afaade 100644
--- a/packages/twenty-server/src/engine/core-modules/common/constant/all-flat-entity-maps-properties.constant.ts
+++ b/packages/twenty-server/src/engine/core-modules/common/constant/all-flat-entity-maps-properties.constant.ts
@@ -8,4 +8,5 @@ export const ALL_FLAT_ENTITY_MAPS_PROPERTIES = [
'flatServerlessFunctionMaps',
'flatDatabaseEventTriggerMaps',
'flatCronTriggerMaps',
+ 'flatFieldMetadataMaps',
] as const satisfies (keyof AllFlatEntityMaps)[];
diff --git a/packages/twenty-server/src/engine/core-modules/common/constant/empty-all-flat-entity-maps.constant.ts b/packages/twenty-server/src/engine/core-modules/common/constant/empty-all-flat-entity-maps.constant.ts
index 3913d816ee3..de943b0cd2b 100644
--- a/packages/twenty-server/src/engine/core-modules/common/constant/empty-all-flat-entity-maps.constant.ts
+++ b/packages/twenty-server/src/engine/core-modules/common/constant/empty-all-flat-entity-maps.constant.ts
@@ -2,10 +2,8 @@ import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
export const EMPTY_ALL_FLAT_ENTITY_MAPS = {
- flatObjectMetadataMaps: {
- ...EMPTY_FLAT_ENTITY_MAPS,
- idByNameSingular: {},
- },
+ flatObjectMetadataMaps: EMPTY_FLAT_ENTITY_MAPS,
+ flatFieldMetadataMaps: EMPTY_FLAT_ENTITY_MAPS,
flatIndexMaps: EMPTY_FLAT_ENTITY_MAPS,
flatViewFieldMaps: EMPTY_FLAT_ENTITY_MAPS,
flatViewMaps: EMPTY_FLAT_ENTITY_MAPS,
diff --git a/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module.ts b/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module.ts
index b051ec1ae2b..0032a192ae1 100644
--- a/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module.ts
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { WorkspaceFlatMapCacheModule } from 'src/engine/workspace-flat-map-cache/workspace-flat-map-cache.module';
@Module({
diff --git a/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service..ts b/packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.ts
similarity index 100%
rename from packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service..ts
rename to packages/twenty-server/src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.ts
diff --git a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts
index 0ea00ca9245..2d5abd88932 100644
--- a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts
+++ b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts
@@ -2,12 +2,13 @@ import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types
import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type';
import { type FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
import { type FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
+import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
export type AllFlatEntitiesByMetadataEngineName = {
- // flatFieldMetadata: FlatFieldMetadata;
+ fieldMetadata: FlatFieldMetadata;
objectMetadata: FlatObjectMetadata;
view: FlatView;
viewField: FlatViewField;
diff --git a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entity-maps.type.ts b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entity-maps.type.ts
index c48e4e23114..8df73fa1918 100644
--- a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entity-maps.type.ts
+++ b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entity-maps.type.ts
@@ -1,14 +1,9 @@
import { type AllFlatEntitiesByMetadataEngineName } from 'src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type';
import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
+import { type FromMetadataEngineNameToFlatEntityMapsKey } from 'src/engine/core-modules/common/types/from-metadata-engine-name-to-flat-entity-maps-key.type';
-export type AllFlatEntityMaps = Omit<
- {
- [P in keyof AllFlatEntitiesByMetadataEngineName as `flat${Capitalize
}Maps`]: FlatEntityMaps<
- AllFlatEntitiesByMetadataEngineName[P]
- >;
- },
- 'flatObjectMetadataMaps'
-> & {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
+export type AllFlatEntityMaps = {
+ [P in keyof AllFlatEntitiesByMetadataEngineName as FromMetadataEngineNameToFlatEntityMapsKey
]: FlatEntityMaps<
+ AllFlatEntitiesByMetadataEngineName[P]
+ >;
};
diff --git a/packages/twenty-server/src/engine/core-modules/common/types/from-metadata-engine-name-to-flat-entity-maps-key.type.ts b/packages/twenty-server/src/engine/core-modules/common/types/from-metadata-engine-name-to-flat-entity-maps-key.type.ts
new file mode 100644
index 00000000000..45700265f67
--- /dev/null
+++ b/packages/twenty-server/src/engine/core-modules/common/types/from-metadata-engine-name-to-flat-entity-maps-key.type.ts
@@ -0,0 +1,5 @@
+import { type AllFlatEntitiesByMetadataEngineName } from 'src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type';
+
+export type FromMetadataEngineNameToFlatEntityMapsKey<
+ P extends keyof AllFlatEntitiesByMetadataEngineName,
+> = `flat${Capitalize
}Maps`;
diff --git a/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
index 7e5a34c3f48..0df2a75e75d 100644
--- a/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts
@@ -1,4 +1,5 @@
import {
+ ConsoleLogger,
Inject,
Injectable,
type LogLevel,
@@ -7,9 +8,15 @@ import {
import { LOGGER_DRIVER } from 'src/engine/core-modules/logger/logger.constants';
+type LoggerDriverType = ConsoleLogger & {
+ options?: {
+ logLevels?: LogLevel[];
+ };
+};
+
@Injectable()
export class LoggerService implements LoggerServiceInterface {
- constructor(@Inject(LOGGER_DRIVER) private driver: LoggerServiceInterface) {}
+ constructor(@Inject(LOGGER_DRIVER) private driver: LoggerDriverType) {}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
log(message: any, category: string, ...optionalParams: any[]) {
@@ -51,4 +58,18 @@ export class LoggerService implements LoggerServiceInterface {
setLogLevels(levels: LogLevel[]) {
this.driver.setLogLevels?.apply(this.driver, [levels]);
}
+
+ time(category: string, label: string) {
+ if (this.driver.options.logLevels?.includes('debug')) {
+ // eslint-disable-next-line no-console
+ console.time(`[${category}] ${label}`);
+ }
+ }
+
+ timeEnd(category: string, label: string) {
+ if (this.driver.options.logLevels?.includes('debug')) {
+ // eslint-disable-next-line no-console
+ console.timeEnd(`[${category}] ${label}`);
+ }
+ }
}
diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts b/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts
index a27c3c8c22e..be4e9742758 100644
--- a/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
@@ -35,16 +35,16 @@ export class ViewFieldV2Service {
workspaceId: string;
}): Promise {
const {
- flatObjectMetadataMaps,
flatViewFieldMaps: existingFlatViewFieldMaps,
- flatViewMaps: existingFlatViewMaps,
+ flatViewMaps,
+ flatFieldMetadataMaps,
} = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatEntities: [
- 'flatObjectMetadataMaps',
'flatViewFieldMaps',
'flatViewMaps',
+ 'flatFieldMetadataMaps',
],
},
);
@@ -70,8 +70,8 @@ export class ViewFieldV2Service {
},
},
dependencyAllFlatEntityMaps: {
- flatObjectMetadataMaps,
- flatViewMaps: existingFlatViewMaps,
+ flatFieldMetadataMaps,
+ flatViewMaps,
},
buildOptions: {
isSystemBuild: false,
diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts b/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts
index a5454643416..87350db8987 100644
--- a/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
diff --git a/packages/twenty-server/src/engine/dataloaders/dataloader.module.ts b/packages/twenty-server/src/engine/dataloaders/dataloader.module.ts
index ce677d17eb5..09ff7a18ef2 100644
--- a/packages/twenty-server/src/engine/dataloaders/dataloader.module.ts
+++ b/packages/twenty-server/src/engine/dataloaders/dataloader.module.ts
@@ -1,11 +1,16 @@
import { Module } from '@nestjs/common';
+import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module';
import { DataloaderService } from 'src/engine/dataloaders/dataloader.service';
import { FieldMetadataModule } from 'src/engine/metadata-modules/field-metadata/field-metadata.module';
import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.module';
@Module({
- imports: [FieldMetadataModule, WorkspaceMetadataCacheModule],
+ imports: [
+ FieldMetadataModule,
+ WorkspaceMetadataCacheModule,
+ WorkspaceManyOrAllFlatEntityMapsCacheModule,
+ ],
providers: [DataloaderService],
exports: [DataloaderService],
})
diff --git a/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts b/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts
index 7ff87df1e03..2a37718a630 100644
--- a/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts
+++ b/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts
@@ -7,6 +7,8 @@ import { isDefined } from 'twenty-shared/utils';
import { type IndexMetadataInterface } from 'src/engine/metadata-modules/index-metadata/interfaces/index-metadata.interface';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
import { type IDataloaders } from 'src/engine/dataloaders/dataloader.interface';
import { filterMorphRelationDuplicateFields } from 'src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util';
@@ -16,11 +18,11 @@ import { RelationDTO } from 'src/engine/metadata-modules/field-metadata/dtos/rel
import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { resolveFieldMetadataStandardOverride } from 'src/engine/metadata-modules/field-metadata/utils/resolve-field-metadata-standard-override.util';
import { findAllOthersMorphRelationFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { fromFlatFieldMetadataToFieldMetadataDto } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util';
import { fromMorphOrRelationFlatFieldMetadataToRelationDto } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-morph-or-relation-flat-field-metadata-to-relation-dto.util';
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
-import { findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
+import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
import { type IndexFieldMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-field-metadata.dto';
import { type IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-metadata.dto';
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
@@ -70,6 +72,7 @@ export type ObjectMetadataLoaderPayload = {
export class DataloaderService {
constructor(
private readonly i18nService: I18nService,
+ private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService,
private readonly workspaceMetadataCacheService: WorkspaceMetadataCacheService,
) {}
@@ -96,19 +99,19 @@ export class DataloaderService {
async (dataLoaderParams: RelationLoaderPayload[]) => {
const relationDtos: Array = [];
const workspaceId = dataLoaderParams[0].workspaceId;
- const { flatObjectMetadataMaps: existingFlatObjectMetadataMaps } =
- await this.workspaceMetadataCacheService.getExistingOrRecomputeFlatObjectMetadataMaps(
+ const { flatFieldMetadataMaps, flatObjectMetadataMaps } =
+ await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
+ flatEntities: ['flatFieldMetadataMaps', 'flatObjectMetadataMaps'],
},
);
- for (const { fieldMetadataId, objectMetadataId } of dataLoaderParams) {
+ for (const { fieldMetadataId } of dataLoaderParams) {
const sourceFlatFieldMetadata =
- findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId,
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: fieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
});
if (
@@ -122,32 +125,48 @@ export class DataloaderService {
}
const sourceFlatObjectMetadata =
- findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: sourceFlatFieldMetadata.objectMetadataId,
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: sourceFlatFieldMetadata.objectMetadataId,
+ flatEntityMaps: flatObjectMetadataMaps,
+ });
+
+ const targetFlatFieldMetadata =
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId:
+ sourceFlatFieldMetadata.relationTargetFieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
+ });
+
+ if (!isMorphOrRelationFlatFieldMetadata(targetFlatFieldMetadata)) {
+ relationDtos.push(null);
+ continue;
+ }
+
+ const targetFlatObjectMetadata =
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: targetFlatFieldMetadata.objectMetadataId,
+ flatEntityMaps: flatObjectMetadataMaps,
});
if (
isFlatFieldMetadataOfType(
- sourceFlatFieldMetadata.flatRelationTargetFieldMetadata,
+ targetFlatFieldMetadata,
FieldMetadataType.MORPH_RELATION,
)
) {
const allMorphFlatFieldMetadatas =
findAllOthersMorphRelationFlatFieldMetadatasOrThrow({
- flatFieldMetadata:
- sourceFlatFieldMetadata.flatRelationTargetFieldMetadata,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatFieldMetadata: targetFlatFieldMetadata,
+ flatFieldMetadataMaps,
+ flatObjectMetadata: targetFlatObjectMetadata,
}).sort((a, b) => (a.id > b.id ? 1 : -1));
relationDtos.push(
fromMorphOrRelationFlatFieldMetadataToRelationDto({
- flatFieldMetadata: {
- ...sourceFlatFieldMetadata,
- flatRelationTargetFieldMetadata:
- allMorphFlatFieldMetadatas[0],
- },
+ sourceFlatFieldMetadata,
sourceFlatObjectMetadata,
+ targetFlatFieldMetadata: allMorphFlatFieldMetadatas[0],
+ targetFlatObjectMetadata,
}),
);
continue;
@@ -155,7 +174,9 @@ export class DataloaderService {
relationDtos.push(
fromMorphOrRelationFlatFieldMetadataToRelationDto({
- flatFieldMetadata: sourceFlatFieldMetadata,
+ sourceFlatFieldMetadata,
+ targetFlatFieldMetadata,
+ targetFlatObjectMetadata,
sourceFlatObjectMetadata,
}),
);
@@ -170,20 +191,20 @@ export class DataloaderService {
return new DataLoader(
async (dataLoaderParams: MorphRelationLoaderPayload[]) => {
const workspaceId = dataLoaderParams[0].workspaceId;
- const { flatObjectMetadataMaps: existingFlatObjectMetadataMaps } =
- await this.workspaceMetadataCacheService.getExistingOrRecomputeFlatObjectMetadataMaps(
+ const { flatFieldMetadataMaps, flatObjectMetadataMaps } =
+ await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
+ flatEntities: ['flatFieldMetadataMaps', 'flatObjectMetadataMaps'],
},
);
const relationDtos: Array = [];
- for (const { fieldMetadataId, objectMetadataId } of dataLoaderParams) {
+ for (const { fieldMetadataId } of dataLoaderParams) {
const morphFlatFieldMetadata =
- findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId,
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: fieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
});
if (
@@ -197,15 +218,16 @@ export class DataloaderService {
}
const sourceFlatObjectMetadata =
- findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: morphFlatFieldMetadata.objectMetadataId,
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityMaps: flatObjectMetadataMaps,
+ flatEntityId: morphFlatFieldMetadata.objectMetadataId,
});
const relatedMorphFlatFieldMetadatas =
findAllOthersMorphRelationFlatFieldMetadatasOrThrow({
flatFieldMetadata: morphFlatFieldMetadata,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadata: sourceFlatObjectMetadata,
});
const allMorphFlatFieldMetadatas = [
morphFlatFieldMetadata,
@@ -213,12 +235,34 @@ export class DataloaderService {
];
relationDtos.push(
- allMorphFlatFieldMetadatas.map((flatFieldMetadata) =>
- fromMorphOrRelationFlatFieldMetadataToRelationDto({
- flatFieldMetadata,
+ allMorphFlatFieldMetadatas.flatMap((sourceFlatFieldMetadata) => {
+ const targetFlatFieldMetadata =
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId:
+ sourceFlatFieldMetadata.relationTargetFieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
+ });
+
+ if (
+ !isMorphOrRelationFlatFieldMetadata(targetFlatFieldMetadata)
+ ) {
+ return [];
+ }
+
+ const targetFlatObjectMetadata =
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId:
+ sourceFlatFieldMetadata.relationTargetObjectMetadataId,
+ flatEntityMaps: flatObjectMetadataMaps,
+ });
+
+ return fromMorphOrRelationFlatFieldMetadataToRelationDto({
+ sourceFlatFieldMetadata,
+ targetFlatFieldMetadata,
+ targetFlatObjectMetadata,
sourceFlatObjectMetadata,
- }),
- ),
+ });
+ }),
);
}
@@ -279,22 +323,29 @@ export class DataloaderService {
(dataLoaderParam) => dataLoaderParam.objectMetadata.id,
);
- const { flatObjectMetadataMaps: existingFlatObjectMetadataMaps } =
- await this.workspaceMetadataCacheService.getExistingOrRecomputeFlatObjectMetadataMaps(
- { workspaceId },
+ const { flatFieldMetadataMaps, flatObjectMetadataMaps } =
+ await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: ['flatFieldMetadataMaps', 'flatObjectMetadataMaps'],
+ },
);
- const fieldMetadataCollection = objectMetadataIds.map((id) => {
- const flatObjectMetadataWithFlatFieldMaps =
- existingFlatObjectMetadataMaps.byId[id];
+ const fieldMetadataCollection = objectMetadataIds.map(
+ (objectMetadataId) => {
+ const flatObjectMetadata =
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: objectMetadataId,
+ flatEntityMaps: flatObjectMetadataMaps,
+ });
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps: flatFieldMetadataMaps,
+ flatObjectMetadata,
+ });
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- return [];
- }
-
- const overriddenFieldMetadataEntities =
- flatObjectMetadataWithFlatFieldMaps.flatFieldMetadatas.map(
- (flatFieldMetadata) => {
+ const overriddenFieldMetadataEntities =
+ objectFlatFieldMetadatas.map((flatFieldMetadata) => {
return FIELD_METADATA_STANDARD_OVERRIDES_PROPERTIES.reduce(
(acc, property) => ({
...acc,
@@ -314,16 +365,18 @@ export class DataloaderService {
}),
flatFieldMetadata,
);
- },
+ });
+
+ const filteredFieldMetadataEntities =
+ filterMorphRelationDuplicateFields(
+ overriddenFieldMetadataEntities,
+ );
+
+ return filteredFieldMetadataEntities.map(
+ fromFlatFieldMetadataToFieldMetadataDto,
);
-
- const filteredFieldMetadataEntities =
- filterMorphRelationDuplicateFields(overriddenFieldMetadataEntities);
-
- return filteredFieldMetadataEntities.map(
- fromFlatFieldMetadataToFieldMetadataDto,
- );
- });
+ },
+ );
return fieldMetadataCollection;
},
diff --git a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts
index 049a7b975c3..c5770e0c474 100644
--- a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
diff --git a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts
index df442b94f14..d743637d68c 100644
--- a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service-v2.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service-v2.ts
index e87513d8e3e..cb1991b3a29 100644
--- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service-v2.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service-v2.ts
@@ -4,9 +4,11 @@ import { InjectRepository } from '@nestjs/typeorm';
import { isDefined } from 'twenty-shared/utils';
import { In, Repository } from 'typeorm';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
+import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util';
import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util';
import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { type DeleteOneFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/delete-field.input';
@@ -22,10 +24,6 @@ import { fromDeleteFieldInputToFlatFieldMetadatasToDelete } from 'src/engine/met
import { fromFlatFieldMetadataToFieldMetadataDto } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util';
import { fromUpdateFieldInputToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util';
import { throwOnFieldInputTranspilationsError } from 'src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util';
-import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
-import { getSubFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
-import { replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2';
import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service';
@@ -70,13 +68,17 @@ export class FieldMetadataServiceV2 {
const {
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
- } =
- await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
- {
- workspaceId,
- flatEntities: ['flatObjectMetadataMaps', 'flatIndexMaps'],
- },
- );
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ } = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: [
+ 'flatObjectMetadataMaps',
+ 'flatIndexMaps',
+ 'flatFieldMetadataMaps',
+ ],
+ },
+ );
const {
flatFieldMetadatasToDelete,
@@ -84,39 +86,40 @@ export class FieldMetadataServiceV2 {
flatIndexesToUpdate,
} = fromDeleteFieldInputToFlatFieldMetadatasToDelete({
deleteOneFieldInput,
- existingFlatObjectMetadataMaps,
- existingFlatIndexMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ flatIndexMaps: existingFlatIndexMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
});
- const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: [
- ...new Set(
- flatFieldMetadatasToDelete.map(
- (flatFieldMetadataToDelete) =>
- flatFieldMetadataToDelete.objectMetadataId,
- ),
- ),
+ const fromFlatFieldMetadataMaps = getSubFlatEntityMapsOrThrow({
+ flatEntityMaps: existingFlatFieldMetadataMaps,
+ flatEntityIds: [
+ ...new Set(flatFieldMetadatasToDelete.map((flatField) => flatField.id)),
],
});
- const toFlatObjectMetadataMaps = flatFieldMetadatasToDelete.reduce(
- (flatObjectMetadataMaps, flatFieldMetadataToDelete) =>
- deleteFieldFromFlatObjectMetadataMapsOrThrow({
- fieldMetadataId: flatFieldMetadataToDelete.id,
- flatObjectMetadataMaps,
- objectMetadataId: flatFieldMetadataToDelete.objectMetadataId,
+ const toFlatFieldMetadataMaps = flatFieldMetadatasToDelete.reduce(
+ (flatFieldMetadataMaps, flatFieldMetadataToDelete) =>
+ deleteFlatEntityFromFlatEntityMapsOrThrow({
+ entityToDeleteId: flatFieldMetadataToDelete.id,
+ flatEntityMaps: flatFieldMetadataMaps,
}),
- fromFlatObjectMetadataMaps,
+ fromFlatFieldMetadataMaps,
);
+ const fromFlatIndexMaps = getSubFlatEntityMapsOrThrow({
+ flatEntityIds: [...flatIndexesToUpdate, ...flatIndexesToDelete].map(
+ ({ id }) => id,
+ ),
+ flatEntityMaps: existingFlatIndexMaps,
+ });
const toFlatIndexMapsWithUpdatedFlatIndex = flatIndexesToUpdate.reduce(
(flatIndexMaps, flatIndex) =>
replaceFlatEntityInFlatEntityMapsOrThrow({
flatEntity: flatIndex,
flatEntityMaps: flatIndexMaps,
}),
- existingFlatIndexMaps,
+ fromFlatIndexMaps,
);
const toFlatIndexMaps = flatIndexesToDelete.reduce(
(flatIndexMaps, flatIndex) =>
@@ -130,17 +133,20 @@ export class FieldMetadataServiceV2 {
const validateAndBuildResult =
await this.workspaceMigrationValidateBuildAndRunService.validateBuildAndRunWorkspaceMigration(
{
+ dependencyAllFlatEntityMaps: {
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ },
buildOptions: {
isSystemBuild: false,
inferDeletionFromMissingEntities: true,
},
fromToAllFlatEntityMaps: {
- flatObjectMetadataMaps: {
- from: fromFlatObjectMetadataMaps,
- to: toFlatObjectMetadataMaps,
+ flatFieldMetadataMaps: {
+ from: fromFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
},
flatIndexMaps: {
- from: existingFlatIndexMaps,
+ from: fromFlatIndexMaps,
to: toFlatIndexMaps,
},
},
@@ -170,15 +176,20 @@ export class FieldMetadataServiceV2 {
const {
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
- } =
- await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
- {
- workspaceId,
- flatEntities: ['flatObjectMetadataMaps', 'flatIndexMaps'],
- },
- );
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ } = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: [
+ 'flatObjectMetadataMaps',
+ 'flatIndexMaps',
+ 'flatFieldMetadataMaps',
+ ],
+ },
+ );
const inputTranspilationResult = fromUpdateFieldInputToFlatFieldMetadata({
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
updateFieldInput,
@@ -193,29 +204,19 @@ export class FieldMetadataServiceV2 {
flatIndexMetadatasToUpdate,
} = inputTranspilationResult.result;
- const objectMetadataIdWithRelatedObjectMetadataIds = [
- ...new Set(
- optimisticallyUpdatedFlatFieldMetadatas.flatMap(
- ({ objectMetadataId, relationTargetObjectMetadataId }) =>
- isDefined(relationTargetObjectMetadataId)
- ? [objectMetadataId, relationTargetObjectMetadataId]
- : [objectMetadataId],
- ),
- ),
- ];
- const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: objectMetadataIdWithRelatedObjectMetadataIds,
- });
-
- const toFlatObjectMetadataMaps =
+ const toFlatFieldMetadataMaps =
optimisticallyUpdatedFlatFieldMetadatas.reduce(
- (flatObjectMetadataMaps, flatFieldMetadata) =>
- replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps,
- flatFieldMetadata,
+ (flatFieldMaps, flatFieldMetadata) =>
+ replaceFlatEntityInFlatEntityMapsOrThrow({
+ flatEntityMaps: flatFieldMaps,
+ flatEntity: flatFieldMetadata,
}),
- fromFlatObjectMetadataMaps,
+ getSubFlatEntityMapsOrThrow({
+ flatEntityIds: optimisticallyUpdatedFlatFieldMetadatas.map(
+ ({ id }) => id,
+ ),
+ flatEntityMaps: existingFlatFieldMetadataMaps,
+ }),
);
const toFlatIndexMaps = flatIndexMetadatasToUpdate.reduce(
@@ -224,16 +225,22 @@ export class FieldMetadataServiceV2 {
flatEntity: flatIndexMetadata,
flatEntityMaps: flatIndexMaps,
}),
- existingFlatIndexMaps,
+ getSubFlatEntityMapsOrThrow({
+ flatEntityIds: flatIndexMetadatasToUpdate.map(({ id }) => id),
+ flatEntityMaps: existingFlatIndexMaps,
+ }),
);
const validateAndBuildResult =
await this.workspaceMigrationValidateBuildAndRunService.validateBuildAndRunWorkspaceMigration(
{
+ dependencyAllFlatEntityMaps: {
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ },
fromToAllFlatEntityMaps: {
- flatObjectMetadataMaps: {
- from: fromFlatObjectMetadataMaps,
- to: toFlatObjectMetadataMaps,
+ flatFieldMetadataMaps: {
+ from: existingFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
},
flatIndexMaps: {
from: existingFlatIndexMaps,
@@ -277,24 +284,28 @@ export class FieldMetadataServiceV2 {
const {
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
- } =
- await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
- {
- workspaceId,
- flatEntities: ['flatObjectMetadataMaps', 'flatIndexMaps'],
- },
- );
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ } = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: [
+ 'flatObjectMetadataMaps',
+ 'flatIndexMaps',
+ 'flatFieldMetadataMaps',
+ ],
+ },
+ );
const allTranspiledTranspilationInputs: Awaited<
ReturnType
>[] = [];
- for (const createInput of createFieldInputs) {
+ for (const createFieldInput of createFieldInputs) {
allTranspiledTranspilationInputs.push(
await fromCreateFieldInputToFlatFieldMetadatasToCreate({
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ createFieldInput,
workspaceId,
- rawCreateFieldInput: createInput,
}),
);
}
@@ -318,28 +329,13 @@ export class FieldMetadataServiceV2 {
{ flatFieldMetadatas: [], indexMetadatas: [] },
);
- const impactedObjectMetadataIds = Array.from(
- new Set(
- flatFieldMetadatasToCreate.map(
- (flatFieldMetadata) => flatFieldMetadata.objectMetadataId,
- ),
- ),
- );
-
- const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: impactedObjectMetadataIds,
- });
- const toFlatObjectMetadataMaps = flatFieldMetadatasToCreate.reduce(
- (flatObjectMetadataMaps, flatFieldMetadataToCreate) =>
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata: flatFieldMetadataToCreate,
- flatObjectMetadataMaps,
+ const toFlatFieldMetadataMaps = flatFieldMetadatasToCreate.reduce(
+ (flatFieldMaps, flatFieldMetadataToCreate) =>
+ addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: flatFieldMetadataToCreate,
+ flatEntityMaps: flatFieldMaps,
}),
- getSubFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: impactedObjectMetadataIds,
- }),
+ EMPTY_FLAT_ENTITY_MAPS,
);
const toFlatIndexMaps = flatIndexMetadatasToCreate.reduce(
@@ -348,16 +344,19 @@ export class FieldMetadataServiceV2 {
flatEntity: flatIndex,
flatEntityMaps: flatIndexMaps,
}),
- existingFlatIndexMaps,
+ EMPTY_FLAT_ENTITY_MAPS,
);
const validateAndBuildResult =
await this.workspaceMigrationValidateBuildAndRunService.validateBuildAndRunWorkspaceMigration(
{
+ dependencyAllFlatEntityMaps: {
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ },
fromToAllFlatEntityMaps: {
- flatObjectMetadataMaps: {
- from: fromFlatObjectMetadataMaps,
- to: toFlatObjectMetadataMaps,
+ flatFieldMetadataMaps: {
+ from: existingFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
},
flatIndexMaps: {
from: existingFlatIndexMaps,
diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts
index 4e576d27b14..a0b433af9ad 100644
--- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts
@@ -15,6 +15,7 @@ import {
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
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';
@@ -101,6 +102,7 @@ export class FieldMetadataService extends TypeOrmQueryService;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/company-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/company-flat-fields.mock.ts
index 4c4a6130da2..d96e91f4ab9 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/company-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/company-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-4d99-4e2e-a84c-4a27837b1ece',
- flatRelationTargetFieldMetadata: null,
}),
domainName: getFlatFieldMetadataMock({
id: 'f4b67402-1686-491f-a3c7-f70ac9b021cf',
@@ -62,7 +60,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-0c28-43d8-8ba5-3659924d3489',
- flatRelationTargetFieldMetadata: null,
}),
employees: getFlatFieldMetadataMock({
id: '721d26f0-238d-4d55-a1a2-62f915631c4d',
@@ -87,7 +84,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-8965-464a-8a75-74bafc152a0b',
- flatRelationTargetFieldMetadata: null,
}),
linkedinLink: getFlatFieldMetadataMock({
id: '6acb80a0-dab8-4d97-a0c8-15e4a495fb54',
@@ -116,7 +112,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-ebeb-4beb-b9ad-6848036fb451',
- flatRelationTargetFieldMetadata: null,
}),
xLink: getFlatFieldMetadataMock({
id: 'fc630bbb-aa2c-4554-aa4f-9afc0b0567f9',
@@ -145,7 +140,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-6f64-4fd9-9580-9c1991c7d8c3',
- flatRelationTargetFieldMetadata: null,
}),
annualRecurringRevenue: getFlatFieldMetadataMock({
id: '1e34d871-3e1a-4903-850e-1e4bc6b1d72b',
@@ -171,7 +165,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-602a-495c-9776-f5d5b11d227b',
- flatRelationTargetFieldMetadata: null,
}),
address: getFlatFieldMetadataMock({
id: '1bd4dc61-e644-4a9e-8899-cacdf43571a1',
@@ -205,7 +198,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-c5ce-4adc-b7b6-9c0979fc55e7',
- flatRelationTargetFieldMetadata: null,
}),
idealCustomerProfile: getFlatFieldMetadataMock({
id: '8b75a4f1-dc7d-4fa3-b778-616ab9128c31',
@@ -231,7 +223,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-ba6b-438a-8213-2c5ba28d76a2',
- flatRelationTargetFieldMetadata: null,
}),
position: getFlatFieldMetadataMock({
id: 'ed081dac-ff61-4fe1-bc2c-073644b61c28',
@@ -256,7 +247,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-9b4e-462b-991d-a0ee33326454',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: 'dbbddd40-a72b-47fe-9ecf-9bdd4282369a',
@@ -285,7 +275,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-fabc-451d-ab7d-412170916baa',
- flatRelationTargetFieldMetadata: null,
}),
searchVector: getFlatFieldMetadataMock({
id: 'b2850ac5-d368-44ab-bc79-b1bf7212e5fb',
@@ -310,7 +299,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '85c71601-72f9-4b7b-b343-d46100b2c74d',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '982dff40-66c9-4b9b-b3ec-8fa7076ea3a6',
@@ -335,7 +323,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: 'e2f65a26-0210-4f22-954b-7d448abbdb28',
@@ -360,7 +347,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '26518091-a31b-4716-8627-4e2d25bc0e60',
@@ -385,7 +371,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '29ba1ee7-fc21-441c-8acc-45d9e56751e3',
@@ -410,7 +395,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
people: getFlatFieldMetadataMock({
id: 'b0563539-f027-40c5-a14c-ee7a25ff6fd9',
@@ -435,34 +419,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'ee247ca6-fdaa-4a56-87a2-730cf84f5f29',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-3213-4ddf-9494-6422bcff8d7c',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'ee247ca6-fdaa-4a56-87a2-730cf84f5f29',
- standardId: '20202020-e2f3-448e-b34c-2d625f0025fd',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'Contact’s company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'b0563539-f027-40c5-a14c-ee7a25ff6fd9',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-e2f3-448e-b34c-2d625f0025fd',
- }),
}),
accountOwner: getFlatFieldMetadataMock({
id: '86c6692b-bed5-4ef1-bad0-657e56a85eba',
@@ -492,30 +448,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '1fe5453f-6042-4370-b388-c9a198bd0ab4',
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
universalIdentifier: '20202020-95b8-4e10-9881-edb5d4765f9d',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '1fe5453f-6042-4370-b388-c9a198bd0ab4',
- standardId: '20202020-dc29-4bd4-a3c1-29eafa324bee',
- objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
- type: FieldMetadataType.RELATION,
- name: 'accountOwnerForCompanies',
- label: 'Account Owner For Companies',
- defaultValue: null,
- description: 'Account owner for companies',
- icon: 'IconBriefcase',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '86c6692b-bed5-4ef1-bad0-657e56a85eba',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-dc29-4bd4-a3c1-29eafa324bee',
- }),
}),
taskTargets: getFlatFieldMetadataMock({
id: '4f9138da-cd36-4df4-98f9-ebabe036b141',
@@ -540,34 +472,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'ec11b025-1476-4e84-81c5-cf5b5c776edc',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-cb17-4a61-8f8f-3be6730480de',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'ec11b025-1476-4e84-81c5-cf5b5c776edc',
- standardId: '20202020-4703-4a4e-948c-487b0c60a92c',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'TaskTarget company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '4f9138da-cd36-4df4-98f9-ebabe036b141',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-4703-4a4e-948c-487b0c60a92c',
- }),
}),
noteTargets: getFlatFieldMetadataMock({
id: '56b9dc8a-0379-42cf-ab31-8db7061f5a2a',
@@ -592,34 +496,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'd1d3f9eb-1447-4adb-bc2b-f133bc58ac35',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-bae0-4556-a74a-a9c686f77a88',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'd1d3f9eb-1447-4adb-bc2b-f133bc58ac35',
- standardId: 'c500fbc0-d6f2-4982-a959-5a755431696c',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'NoteTarget company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '56b9dc8a-0379-42cf-ab31-8db7061f5a2a',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: 'c500fbc0-d6f2-4982-a959-5a755431696c',
- }),
}),
opportunities: getFlatFieldMetadataMock({
id: '3eda8c8e-74e4-401f-bb0e-470db5b267e6',
@@ -644,34 +520,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '512890f1-4da0-4b96-bb71-5ccabefb82e7',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-add3-4658-8e23-d70dccb6d0ec',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '512890f1-4da0-4b96-bb71-5ccabefb82e7',
- standardId: '20202020-cbac-457e-b565-adece5fc815f',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'Opportunity company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '3eda8c8e-74e4-401f-bb0e-470db5b267e6',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-cbac-457e-b565-adece5fc815f',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '72415216-fed4-450b-aa00-691e37718b01',
@@ -696,34 +544,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d55',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
- standardId: '20202020-cff5-4682-8bf9-069169e08279',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'Favorite company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '72415216-fed4-450b-aa00-691e37718b01',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-cff5-4682-8bf9-069169e08279',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '44a572c5-d620-47f5-943a-346ae967e99e',
@@ -748,34 +568,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '0bacf73b-f45b-4683-85b4-3e812e6228bf',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-c1b5-4120-b0f0-987ca401ed53',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '0bacf73b-f45b-4683-85b4-3e812e6228bf',
- standardId: '20202020-ceab-4a28-b546-73b06b4c08d5',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'Attachment company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '44a572c5-d620-47f5-943a-346ae967e99e',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-ceab-4a28-b546-73b06b4c08d5',
- }),
}),
timelineActivities: getFlatFieldMetadataMock({
id: 'cc78390f-f570-4c2c-9f19-2a8fef67f4f6',
@@ -800,34 +592,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'fd8cabe5-7dc8-4d6a-8053-43434488b3e4',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-0414-4daf-9c0d-64fe7b27f89f',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'fd8cabe5-7dc8-4d6a-8053-43434488b3e4',
- standardId: '20202020-04ad-4221-a744-7a8278a5ce21',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'company',
- label: 'Company',
- defaultValue: null,
- description: 'Event company',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'companyId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'cc78390f-f570-4c2c-9f19-2a8fef67f4f6',
- relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- universalIdentifier: '20202020-04ad-4221-a744-7a8278a5ce21',
- }),
}),
tagline: getFlatFieldMetadataMock({
id: 'f869f4ed-e440-486a-8392-be33ab327cf4',
@@ -852,7 +616,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'f869f4ed-e440-486a-8392-be33ab327cf4',
- flatRelationTargetFieldMetadata: null,
}),
introVideo: getFlatFieldMetadataMock({
id: '339b52b7-adfb-4bd3-ae42-0697da92c0fa',
@@ -881,7 +644,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '339b52b7-adfb-4bd3-ae42-0697da92c0fa',
- flatRelationTargetFieldMetadata: null,
}),
workPolicy: getFlatFieldMetadataMock({
id: '74c546c1-b183-41d0-ac20-aecde83bf674',
@@ -928,7 +690,6 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '74c546c1-b183-41d0-ac20-aecde83bf674',
- flatRelationTargetFieldMetadata: null,
}),
visaSponsorship: getFlatFieldMetadataMock({
id: '5e48697e-a3d0-4faa-b79c-bddd8c7ae17f',
@@ -953,6 +714,5 @@ export const COMPANY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '5e48697e-a3d0-4faa-b79c-bddd8c7ae17f',
- flatRelationTargetFieldMetadata: null,
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-flat-fields.mock.ts
index 17abc06cc55..d6e8e9e2dac 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-dd26-42c6-8c3c-2a7598c204f6',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '49f58497-4e7c-49e6-b3bc-c91d4b8a8ddc',
@@ -57,7 +55,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '0606a76c-8a72-48ca-90c6-526c729c25eb',
@@ -82,7 +79,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: 'fb202982-0c8e-4917-8dda-acb8248be749',
@@ -107,7 +103,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'ef52e151-a974-470f-bbe7-f345fd4eca65',
@@ -132,7 +127,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
forWorkspaceMember: getFlatFieldMetadataMock({
id: '07f2c3ba-63d1-4e44-bac4-bc4591e51bac',
@@ -161,30 +155,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'a15a4b41-1849-4dea-aa43-f53caad016be',
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
universalIdentifier: '20202020-ce63-49cb-9676-fdc0c45892cd',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'a15a4b41-1849-4dea-aa43-f53caad016be',
- standardId: '20202020-f3c1-4faf-b343-cf7681038757',
- objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the workspace member',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '07f2c3ba-63d1-4e44-bac4-bc4591e51bac',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-f3c1-4faf-b343-cf7681038757',
- }),
}),
person: getFlatFieldMetadataMock({
id: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
@@ -213,30 +183,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-c428-4f40-b6f3-86091511c41c',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
- standardId: '20202020-4073-4117-9cf1-203bcdc91cbd',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the contact',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-4073-4117-9cf1-203bcdc91cbd',
- }),
}),
company: getFlatFieldMetadataMock({
id: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
@@ -265,30 +211,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '72415216-fed4-450b-aa00-691e37718b01',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-cff5-4682-8bf9-069169e08279',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '72415216-fed4-450b-aa00-691e37718b01',
- standardId: '20202020-4d1d-41ac-b13b-621631298d55',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the company',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '9a11532c-6839-46ed-a2f5-ed03f88b86f6',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d55',
- }),
}),
favoriteFolder: getFlatFieldMetadataMock({
id: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
@@ -317,30 +239,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
relationTargetObjectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
universalIdentifier: '20202020-f658-4d12-8b4d-248356aa4bd9',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
- standardId: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
- objectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites in this folder',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
- }),
}),
opportunity: getFlatFieldMetadataMock({
id: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
@@ -369,30 +267,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '87bb9924-a1cc-4357-9c8a-52141dabf266',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-dabc-48e1-8318-2781a2b32aa2',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '87bb9924-a1cc-4357-9c8a-52141dabf266',
- standardId: '20202020-a1c2-4500-aaae-83ba8a0e827a',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the opportunity',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-a1c2-4500-aaae-83ba8a0e827a',
- }),
}),
workflow: getFlatFieldMetadataMock({
id: '12c20527-9b1d-4922-9650-00cc31b26387',
@@ -421,30 +295,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'b848abe8-276b-46c9-9eab-baf34d2a0583',
relationTargetObjectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
universalIdentifier: '20202020-b11b-4dc8-999a-6bd0a947b463',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'b848abe8-276b-46c9-9eab-baf34d2a0583',
- standardId: '20202020-c554-4c41-be7a-cf9cd4b0d512',
- objectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the workflow',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '12c20527-9b1d-4922-9650-00cc31b26387',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-c554-4c41-be7a-cf9cd4b0d512',
- }),
}),
workflowVersion: getFlatFieldMetadataMock({
id: '5cb92f25-c067-4e19-afb3-c7cc038ed1a4',
@@ -473,30 +323,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'ea6b6bda-6ba7-4549-b81a-1f3ced0d4b25',
relationTargetObjectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
universalIdentifier: '20202020-e1b8-4caf-b55a-3ab4d4cbcd21',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'ea6b6bda-6ba7-4549-b81a-1f3ced0d4b25',
- standardId: '20202020-b8e0-4e57-928d-b51671cc71f2',
- objectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the workflow version',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '5cb92f25-c067-4e19-afb3-c7cc038ed1a4',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-b8e0-4e57-928d-b51671cc71f2',
- }),
}),
workflowRun: getFlatFieldMetadataMock({
id: 'a4bdd0d8-c36f-4519-812b-be4800ab14b0',
@@ -525,30 +351,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '444a6e9e-443d-4f04-a60d-32f76f17049c',
relationTargetObjectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
universalIdentifier: '20202020-db5a-4fe4-9a13-9afa22b1e762',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '444a6e9e-443d-4f04-a60d-32f76f17049c',
- standardId: '20202020-4baf-4604-b899-2f7fcfbbf90d',
- objectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the workflow run',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'a4bdd0d8-c36f-4519-812b-be4800ab14b0',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-4baf-4604-b899-2f7fcfbbf90d',
- }),
}),
task: getFlatFieldMetadataMock({
id: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
@@ -577,30 +379,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '33e4eff0-ff0f-4530-802a-cd630481ee84',
relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
universalIdentifier: '20202020-1b1b-4b3b-8b1b-7f8d6a1d7d5c',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '33e4eff0-ff0f-4530-802a-cd630481ee84',
- standardId: '20202020-4d1d-41ac-b13b-621631298d65',
- objectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the task',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d65',
- }),
}),
note: getFlatFieldMetadataMock({
id: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
@@ -629,30 +407,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '065a1ede-f773-48ca-84bf-70f61d838396',
relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
universalIdentifier: '20202020-1f25-43fe-8b00-af212fdde824',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '065a1ede-f773-48ca-84bf-70f61d838396',
- standardId: '20202020-4d1d-41ac-b13b-621631298d67',
- objectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the note',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d67',
- }),
}),
view: getFlatFieldMetadataMock({
id: 'accd216c-790e-4bd2-83bb-0700e06d0e5c',
@@ -681,30 +435,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '90a103ec-7dce-4bd4-aed4-e2c9d46ecf32',
relationTargetObjectMetadataId: '8377fc0d-ec1c-4fb5-b6ae-9381d9b22a95',
universalIdentifier: '20202020-5a93-4fa9-acce-e73481a0bbdf',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '90a103ec-7dce-4bd4-aed4-e2c9d46ecf32',
- standardId: '20202020-c818-4a86-8284-9ec0ef0a59a5',
- objectMetadataId: '8377fc0d-ec1c-4fb5-b6ae-9381d9b22a95',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites linked to the view',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'accd216c-790e-4bd2-83bb-0700e06d0e5c',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-c818-4a86-8284-9ec0ef0a59a5',
- }),
}),
rocket: getFlatFieldMetadataMock({
id: '9448627d-725d-499e-a071-90fd5cfcf0ea',
@@ -733,30 +463,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '14010360-f3c2-442e-b05f-43c30158f246',
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
universalIdentifier: '20202020-78f7-4d7d-86e9-7562ced0b381',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '14010360-f3c2-442e-b05f-43c30158f246',
- standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
- objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites tied to the Rocket',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '9448627d-725d-499e-a071-90fd5cfcf0ea',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
- }),
}),
pet: getFlatFieldMetadataMock({
id: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
@@ -785,30 +491,6 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
universalIdentifier: '20202020-1bd7-4d10-80dc-968b9f5d1a8a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
- standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
- objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites tied to the Pet',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
- }),
}),
surveyResult: getFlatFieldMetadataMock({
id: '9cdfb5a1-bb9c-4a59-811d-f5a1034a8f8b',
@@ -837,29 +519,5 @@ export const FAVORITE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '8e11aced-3a20-4551-baa1-b38b98a74e1c',
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
universalIdentifier: '20202020-d049-4912-80ee-43b09fe3b0ac',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '8e11aced-3a20-4551-baa1-b38b98a74e1c',
- standardId: '20202020-a4a7-4686-b296-1c6c3482ee21',
- objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
- type: FieldMetadataType.RELATION,
- name: 'favorites',
- label: 'Favorites',
- defaultValue: null,
- description: 'Favorites tied to the Survey result',
- icon: 'IconHeart',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '9cdfb5a1-bb9c-4a59-811d-f5a1034a8f8b',
- relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- universalIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-folder-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-folder-flat-fields.mock.ts
index d8407f70f8c..a2a71492f4d 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-folder-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-folder-flat-fields.mock.ts
@@ -4,9 +4,7 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
position: getFlatFieldMetadataMock({
@@ -32,7 +30,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-5278-4bde-8909-2cec74d43744',
- flatRelationTargetFieldMetadata: null,
}),
name: getFlatFieldMetadataMock({
id: '1502abe0-b2f8-43a7-ae55-91c826b34ffe',
@@ -57,7 +54,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-82a3-4537-8ff0-dbce7eec35d6',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '85ab1864-0a92-4682-8583-82e8b696410b',
@@ -82,7 +78,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: 'a92b4b66-c2de-483e-8973-6f12bf36ac1a',
@@ -107,7 +102,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '3907fc24-3bf0-4f0b-88be-f9635e473145',
@@ -132,7 +126,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '52dcb335-5ce1-4165-a30b-4a61e84af21f',
@@ -157,7 +150,6 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
favorites: getFlatFieldMetadataMock({
id: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
@@ -182,33 +174,5 @@ export const FAVORITE_FOLDER_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-b5e3-4b42-8af2-03cd4fd2e4d2',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'fabbe669-b8fc-49fe-8010-f13d01eb61f1',
- standardId: '20202020-f658-4d12-8b4d-248356aa4bd9',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'favoriteFolder',
- label: 'Favorite Folder',
- defaultValue: null,
- description: 'The folder this favorite belongs to',
- icon: 'IconFolder',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'favoriteFolderId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '71b95076-6b8d-45c9-9a7c-ab981b81bd1b',
- relationTargetObjectMetadataId: '35763b74-1abe-4c4b-9eab-27693f0ee06d',
- universalIdentifier: '20202020-f658-4d12-8b4d-248356aa4bd9',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts
index 0015a016b9e..84be773435a 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts
@@ -40,9 +40,8 @@ export const getFlatFieldMetadataMock = (
standardId: null,
standardOverrides: null,
workspaceId: faker.string.uuid(),
- flatRelationTargetFieldMetadata: null,
+
relationTargetFieldMetadataId: null,
- flatRelationTargetObjectMetadata: null,
relationTargetObjectMetadataId: null,
...overrides,
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts
index f3e5d5ec1c0..1764291fc86 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts
@@ -4,8 +4,8 @@ import {
type NonNullableRequired,
} from 'twenty-shared/types';
+import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatRelationTargetFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type';
type GetMorphOrRelationFlatFieldMetadataMockArgs = NonNullableRequired<
Pick<
@@ -28,7 +28,7 @@ export const getRelationTargetFlatFieldMetadataMock = ({
relationTargetFieldMetadataId,
relationTargetObjectMetadataId,
...overrides
-}: GetMorphOrRelationFlatFieldMetadataMockArgs): FlatRelationTargetFieldMetadata => {
+}: GetMorphOrRelationFlatFieldMetadataMockArgs): FlatFieldMetadata => {
const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date;
return {
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/note-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/note-flat-fields.mock.ts
index 0bf47e5dec4..998134be0e6 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/note-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/note-flat-fields.mock.ts
@@ -4,9 +4,7 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
export const NOTE_FLAT_FIELDS_MOCK = {
position: getFlatFieldMetadataMock({
@@ -32,7 +30,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-368d-4dc2-943f-ed8a49c7fdfb',
- flatRelationTargetFieldMetadata: null,
}),
title: getFlatFieldMetadataMock({
id: '3cb30a3f-31c1-47d3-a61e-e537615390c8',
@@ -57,7 +54,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-faeb-4c76-8ba6-ccbb0b4a965f',
- flatRelationTargetFieldMetadata: null,
}),
bodyV2: getFlatFieldMetadataMock({
id: 'acb2973c-7e46-4296-ac79-8b8d163b6d85',
@@ -82,7 +78,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-a7bb-4d94-be51-8f25181502c8',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '1caa79de-f2ec-405c-8667-7a65e9a3bcbf',
@@ -111,7 +106,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-0d79-4e21-ab77-5a394eff97be',
- flatRelationTargetFieldMetadata: null,
}),
searchVector: getFlatFieldMetadataMock({
id: '597b0c10-840e-4ba5-99db-7ef834a72bed',
@@ -136,7 +130,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-7ea8-44d4-9d4c-51dd2a757950',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '6ece96a9-2948-4735-8c8a-40cdb76e23b8',
@@ -161,7 +154,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '0b849709-eee4-4d63-9fef-058cfdd0c098',
@@ -186,7 +178,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '8b4fe2dd-f4fa-4365-964d-d8f0dd7890cd',
@@ -211,7 +202,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'fbf20b48-0aca-49a2-b3a8-67d0d7dfe104',
@@ -236,7 +226,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
noteTargets: getFlatFieldMetadataMock({
id: '3a13d398-b7e6-4871-a5f8-5446806b3e5b',
@@ -261,34 +250,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'b1e812b7-604e-459b-9449-31fa414b315c',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-1f25-43fe-8b00-af212fdde823',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'b1e812b7-604e-459b-9449-31fa414b315c',
- standardId: '20202020-57f3-4f50-9599-fc0f671df003',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'note',
- label: 'Note',
- defaultValue: null,
- description: 'NoteTarget note',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'noteId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '3a13d398-b7e6-4871-a5f8-5446806b3e5b',
- relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- universalIdentifier: '20202020-57f3-4f50-9599-fc0f671df003',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '4d4b3225-ddd2-4d76-a4d6-bcdd43a256e8',
@@ -313,34 +274,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '5a98eb2b-1120-42e3-afd3-09d7da642fba',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-4986-4c92-bf19-39934b149b16',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '5a98eb2b-1120-42e3-afd3-09d7da642fba',
- standardId: '20202020-4f4b-4503-a6fc-6b982f3dffb5',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'note',
- label: 'Note',
- defaultValue: null,
- description: 'Attachment note',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'noteId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '4d4b3225-ddd2-4d76-a4d6-bcdd43a256e8',
- relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- universalIdentifier: '20202020-4f4b-4503-a6fc-6b982f3dffb5',
- }),
}),
timelineActivities: getFlatFieldMetadataMock({
id: '1207d260-db2c-41d4-bb09-34ea1188978f',
@@ -365,34 +298,6 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '2b9f1c90-9e35-4ccc-8d84-b42de31ef127',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-7030-42f8-929c-1a57b25d6bce',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '2b9f1c90-9e35-4ccc-8d84-b42de31ef127',
- standardId: '20202020-ec55-4135-8da5-3a20badc0156',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'note',
- label: 'Note',
- defaultValue: null,
- description: 'Event note',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'noteId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '1207d260-db2c-41d4-bb09-34ea1188978f',
- relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- universalIdentifier: '20202020-ec55-4135-8da5-3a20badc0156',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '065a1ede-f773-48ca-84bf-70f61d838396',
@@ -417,33 +322,5 @@ export const NOTE_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d67',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'a61baf0f-2d43-4fda-9baf-efb000c17ecd',
- standardId: '20202020-1f25-43fe-8b00-af212fdde824',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'note',
- label: 'Note',
- defaultValue: null,
- description: 'Favorite note',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'noteId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '065a1ede-f773-48ca-84bf-70f61d838396',
- relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- universalIdentifier: '20202020-1f25-43fe-8b00-af212fdde824',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/notetarget-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/notetarget-flat-fields.mock.ts
index b8e1dba0d5d..d955834ae93 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/notetarget-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/notetarget-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '3cecf38d-1186-4e66-9eb6-06516d3b3172',
@@ -57,7 +55,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '41e0ee99-7319-4709-a11a-b0d624625359',
@@ -82,7 +79,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '3ef1221e-649f-41f9-a360-12896e3c0935',
@@ -107,7 +103,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
note: getFlatFieldMetadataMock({
id: 'b1e812b7-604e-459b-9449-31fa414b315c',
@@ -136,30 +131,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3a13d398-b7e6-4871-a5f8-5446806b3e5b',
relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
universalIdentifier: '20202020-57f3-4f50-9599-fc0f671df003',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3a13d398-b7e6-4871-a5f8-5446806b3e5b',
- standardId: '20202020-1f25-43fe-8b00-af212fdde823',
- objectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'Relations',
- defaultValue: null,
- description: 'Note targets',
- icon: 'IconArrowUpRight',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'b1e812b7-604e-459b-9449-31fa414b315c',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-1f25-43fe-8b00-af212fdde823',
- }),
}),
person: getFlatFieldMetadataMock({
id: '560c71ff-254f-4baf-a4d1-054c53444f41',
@@ -188,30 +159,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '60388ed8-45f6-4fb5-8752-81c73e13f4ab',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-38ca-4aab-92f5-8a605ca2e4c5',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '60388ed8-45f6-4fb5-8752-81c73e13f4ab',
- standardId: '20202020-c8fc-4258-8250-15905d3fcfec',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'Notes',
- defaultValue: null,
- description: 'Notes tied to the contact',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '560c71ff-254f-4baf-a4d1-054c53444f41',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-c8fc-4258-8250-15905d3fcfec',
- }),
}),
company: getFlatFieldMetadataMock({
id: 'd1d3f9eb-1447-4adb-bc2b-f133bc58ac35',
@@ -240,30 +187,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '56b9dc8a-0379-42cf-ab31-8db7061f5a2a',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: 'c500fbc0-d6f2-4982-a959-5a755431696c',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '56b9dc8a-0379-42cf-ab31-8db7061f5a2a',
- standardId: '20202020-bae0-4556-a74a-a9c686f77a88',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'Notes',
- defaultValue: null,
- description: 'Notes tied to the company',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'd1d3f9eb-1447-4adb-bc2b-f133bc58ac35',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-bae0-4556-a74a-a9c686f77a88',
- }),
}),
opportunity: getFlatFieldMetadataMock({
id: 'f42eac2a-8d99-4259-b69a-549abd553eda',
@@ -292,30 +215,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '36210a54-a72e-4530-a1eb-a0420c53e551',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-4e42-417a-a705-76581c9ade79',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '36210a54-a72e-4530-a1eb-a0420c53e551',
- standardId: '20202020-dd3f-42d5-a382-db58aabf43d3',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'Notes',
- defaultValue: null,
- description: 'Notes tied to the opportunity',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'f42eac2a-8d99-4259-b69a-549abd553eda',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-dd3f-42d5-a382-db58aabf43d3',
- }),
}),
rocket: getFlatFieldMetadataMock({
id: '4212b3d7-dd9f-4da9-85f7-2fa69a42296f',
@@ -344,30 +243,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'c91376fb-20bd-47c7-8922-b64f7db51cfa',
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
universalIdentifier: '20202020-52b6-4d5e-8f21-ed8b7c09c4a9',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'c91376fb-20bd-47c7-8922-b64f7db51cfa',
- standardId: '20202020-01fd-4f37-99dc-9427a444018a',
- objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'NoteTargets',
- defaultValue: null,
- description: 'NoteTargets tied to the Rocket',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '4212b3d7-dd9f-4da9-85f7-2fa69a42296f',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-01fd-4f37-99dc-9427a444018a',
- }),
}),
pet: getFlatFieldMetadataMock({
id: 'd88d0737-e83a-47b1-b701-8edfe4a2ae2e',
@@ -396,30 +271,6 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '98afd46e-0259-4c87-969d-16e7e660e007',
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
universalIdentifier: '20202020-c54e-4804-8b0d-8795e5166432',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '98afd46e-0259-4c87-969d-16e7e660e007',
- standardId: '20202020-01fd-4f37-99dc-9427a444018a',
- objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'NoteTargets',
- defaultValue: null,
- description: 'NoteTargets tied to the Pet',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'd88d0737-e83a-47b1-b701-8edfe4a2ae2e',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-01fd-4f37-99dc-9427a444018a',
- }),
}),
surveyResult: getFlatFieldMetadataMock({
id: '7f444190-cb0e-4417-9c61-e59d8969b7f7',
@@ -448,29 +299,5 @@ export const NOTETARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '1135971a-b1fa-4e63-b480-69410c6a09cd',
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
universalIdentifier: '20202020-75c4-4165-8146-dfdc2a76b940',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '1135971a-b1fa-4e63-b480-69410c6a09cd',
- standardId: '20202020-01fd-4f37-99dc-9427a444018a',
- objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
- type: FieldMetadataType.RELATION,
- name: 'noteTargets',
- label: 'NoteTargets',
- defaultValue: null,
- description: 'NoteTargets tied to the Survey result',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '7f444190-cb0e-4417-9c61-e59d8969b7f7',
- relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- universalIdentifier: '20202020-01fd-4f37-99dc-9427a444018a',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/opportunity-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/opportunity-flat-fields.mock.ts
index d092955b85e..33e3ea29395 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/opportunity-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/opportunity-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-8609-4f65-a2d9-44009eb422b5',
- flatRelationTargetFieldMetadata: null,
}),
amount: getFlatFieldMetadataMock({
id: '2713c658-cfad-4bc2-a6a0-adc4815185a1',
@@ -57,7 +55,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-583e-4642-8533-db761d5fa82f',
- flatRelationTargetFieldMetadata: null,
}),
closeDate: getFlatFieldMetadataMock({
id: '1d15aa71-38ea-473f-aac9-e4519882213f',
@@ -82,7 +79,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-527e-44d6-b1ac-c4158d307b97',
- flatRelationTargetFieldMetadata: null,
}),
stage: getFlatFieldMetadataMock({
id: '4642f809-f302-4525-8af1-3f3ad79998fb',
@@ -143,7 +139,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-6f76-477d-8551-28cd65b2b4b9',
- flatRelationTargetFieldMetadata: null,
}),
position: getFlatFieldMetadataMock({
id: 'd4ca6cb7-fbdb-4e27-b5be-ac9f3a17cf0a',
@@ -168,7 +163,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-806d-493a-bbc6-6313e62958e2',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '29222276-99f1-4443-b5d6-6ea6aa16f28a',
@@ -197,7 +191,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-a63e-4a62-8e63-42a51828f831',
- flatRelationTargetFieldMetadata: null,
}),
searchVector: getFlatFieldMetadataMock({
id: '0ba0c3f0-41f1-4c49-b28b-0a04adddbc7c',
@@ -222,7 +215,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '428a0da5-4b2e-4ce3-b695-89a8b384e6e3',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '06f91646-dd7c-481d-b2d9-6dc02b9b6ca8',
@@ -247,7 +239,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '9cc5c7c6-d9eb-46aa-b4a9-e5a922749b14',
@@ -272,7 +263,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '04629f30-4fdc-4084-bf3f-7f254acc6cf8',
@@ -297,7 +287,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '07435758-30b2-4d10-a2c3-947b8db7797f',
@@ -322,7 +311,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
pointOfContact: getFlatFieldMetadataMock({
id: '0e55bf63-1ffb-4f74-89f2-edd5a6a6686c',
@@ -351,31 +339,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '7580c1b1-e8f9-480b-bd41-38b20df35777',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-8dfb-42fc-92b6-01afb759ed16',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '7580c1b1-e8f9-480b-bd41-38b20df35777',
- standardId: '20202020-911b-4a7d-b67b-918aa9a5b33a',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'pointOfContactForOpportunities',
- label: 'Opportunities',
- defaultValue: null,
- description:
- 'List of opportunities for which that person is the point of contact',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '0e55bf63-1ffb-4f74-89f2-edd5a6a6686c',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-911b-4a7d-b67b-918aa9a5b33a',
- }),
}),
company: getFlatFieldMetadataMock({
id: '512890f1-4da0-4b96-bb71-5ccabefb82e7',
@@ -404,30 +367,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3eda8c8e-74e4-401f-bb0e-470db5b267e6',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-cbac-457e-b565-adece5fc815f',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3eda8c8e-74e4-401f-bb0e-470db5b267e6',
- standardId: '20202020-add3-4658-8e23-d70dccb6d0ec',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'opportunities',
- label: 'Opportunities',
- defaultValue: null,
- description: 'Opportunities linked to the company.',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '512890f1-4da0-4b96-bb71-5ccabefb82e7',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-add3-4658-8e23-d70dccb6d0ec',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '87bb9924-a1cc-4357-9c8a-52141dabf266',
@@ -452,34 +391,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-a1c2-4500-aaae-83ba8a0e827a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '6380cf8e-4327-4d1e-ad21-1826ce4ecf05',
- standardId: '20202020-dabc-48e1-8318-2781a2b32aa2',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'opportunity',
- label: 'Opportunity',
- defaultValue: null,
- description: 'Favorite opportunity',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'opportunityId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '87bb9924-a1cc-4357-9c8a-52141dabf266',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-dabc-48e1-8318-2781a2b32aa2',
- }),
}),
taskTargets: getFlatFieldMetadataMock({
id: 'c0c9f9ac-0d40-4206-90e5-0d1e14f8a09f',
@@ -504,34 +415,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '49afc8d8-dde3-4d19-aa6b-bd16a751b114',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-59c0-4179-a208-4a255f04a5be',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '49afc8d8-dde3-4d19-aa6b-bd16a751b114',
- standardId: '20202020-6cb2-4c01-a9a5-aca3dbc11d41',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'opportunity',
- label: 'Opportunity',
- defaultValue: null,
- description: 'TaskTarget opportunity',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'opportunityId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'c0c9f9ac-0d40-4206-90e5-0d1e14f8a09f',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-6cb2-4c01-a9a5-aca3dbc11d41',
- }),
}),
noteTargets: getFlatFieldMetadataMock({
id: '36210a54-a72e-4530-a1eb-a0420c53e551',
@@ -556,34 +439,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'f42eac2a-8d99-4259-b69a-549abd553eda',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-dd3f-42d5-a382-db58aabf43d3',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'f42eac2a-8d99-4259-b69a-549abd553eda',
- standardId: '20202020-4e42-417a-a705-76581c9ade79',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'opportunity',
- label: 'Opportunity',
- defaultValue: null,
- description: 'NoteTarget opportunity',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'opportunityId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '36210a54-a72e-4530-a1eb-a0420c53e551',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-4e42-417a-a705-76581c9ade79',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '16515578-a6ce-48af-a303-2005bb8492f0',
@@ -608,34 +463,6 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'da72fbe2-a5aa-42b5-b6bd-482a3919eb20',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-87c7-4118-83d6-2f4031005209',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'da72fbe2-a5aa-42b5-b6bd-482a3919eb20',
- standardId: '20202020-7374-499d-bea3-9354890755b5',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'opportunity',
- label: 'Opportunity',
- defaultValue: null,
- description: 'Attachment opportunity',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'opportunityId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '16515578-a6ce-48af-a303-2005bb8492f0',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-7374-499d-bea3-9354890755b5',
- }),
}),
timelineActivities: getFlatFieldMetadataMock({
id: '7826944b-3b21-4448-892e-5a2a68161313',
@@ -660,33 +487,5 @@ export const OPPORTUNITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '026cbaa7-860c-4ed4-b878-8d78849e6c28',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-30e2-421f-96c7-19c69d1cf631',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '026cbaa7-860c-4ed4-b878-8d78849e6c28',
- standardId: '20202020-7664-4a35-a3df-580d389fd527',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'opportunity',
- label: 'Opportunity',
- defaultValue: null,
- description: 'Event opportunity',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'opportunityId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '7826944b-3b21-4448-892e-5a2a68161313',
- relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- universalIdentifier: '20202020-7664-4a35-a3df-580d389fd527',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/person-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/person-flat-fields.mock.ts
index 8b544114397..e567895ac09 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/person-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/person-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-3875-44d5-8c33-a6239011cab8',
- flatRelationTargetFieldMetadata: null,
}),
emails: getFlatFieldMetadataMock({
id: '012dd567-b7d9-4088-a0c1-4ded96a25e35',
@@ -57,7 +55,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-3c51-43fa-8b6e-af39e29368ab',
- flatRelationTargetFieldMetadata: null,
}),
linkedinLink: getFlatFieldMetadataMock({
id: '86e35da6-151d-47e3-8745-bb1e652b789c',
@@ -86,7 +83,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-f1af-48f7-893b-2007a73dd508',
- flatRelationTargetFieldMetadata: null,
}),
xLink: getFlatFieldMetadataMock({
id: 'c9d36790-a449-4108-91e1-c6ad6e3379fb',
@@ -115,7 +111,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-8fc2-487c-b84a-55a99b145cfd',
- flatRelationTargetFieldMetadata: null,
}),
jobTitle: getFlatFieldMetadataMock({
id: 'ab82c659-b553-4317-9708-998f6884c72e',
@@ -140,7 +135,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b0d0-415a-bef9-640a26dacd9b',
- flatRelationTargetFieldMetadata: null,
}),
phones: getFlatFieldMetadataMock({
id: '4955e9cb-a740-49fa-9c91-69ec74a6b3df',
@@ -170,7 +164,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-0638-448e-8825-439134618022',
- flatRelationTargetFieldMetadata: null,
}),
city: getFlatFieldMetadataMock({
id: '61ad7592-6465-4a24-a863-0320cf7830a6',
@@ -195,7 +188,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-5243-4ffb-afc5-2c675da41346',
- flatRelationTargetFieldMetadata: null,
}),
avatarUrl: getFlatFieldMetadataMock({
id: '05e46775-93e9-46c4-8b6f-94829045b1ad',
@@ -220,7 +212,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b8a6-40df-961c-373dc5d2ec21',
- flatRelationTargetFieldMetadata: null,
}),
position: getFlatFieldMetadataMock({
id: '5162d850-29dd-474e-982b-24257b57fd46',
@@ -245,7 +236,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-fcd5-4231-aff5-fff583eaa0b1',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '1a3de345-4f47-4dc9-b328-61c802efa36e',
@@ -274,7 +264,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-f6ab-4d98-af24-a3d5b664148a',
- flatRelationTargetFieldMetadata: null,
}),
searchVector: getFlatFieldMetadataMock({
id: '1d7f79d4-7811-45dc-8f9f-5dbd4863d0a1',
@@ -299,7 +288,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '57d1d7ad-fa10-44fc-82f3-ad0959ec2534',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: 'd9b3e129-49ce-4843-a813-9d16f2239472',
@@ -324,7 +312,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '9fec2460-6fd2-4aaf-8781-78893ba61d6d',
@@ -349,7 +336,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '6a00c4b7-d77c-4268-85e7-9e3a597bd0e7',
@@ -374,7 +360,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'a9f5469d-d7ff-42f6-b3a7-399c8ab8b468',
@@ -399,7 +384,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
company: getFlatFieldMetadataMock({
id: 'ee247ca6-fdaa-4a56-87a2-730cf84f5f29',
@@ -428,30 +412,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'b0563539-f027-40c5-a14c-ee7a25ff6fd9',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-e2f3-448e-b34c-2d625f0025fd',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'b0563539-f027-40c5-a14c-ee7a25ff6fd9',
- standardId: '20202020-3213-4ddf-9494-6422bcff8d7c',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'people',
- label: 'People',
- defaultValue: null,
- description: 'People linked to the company.',
- icon: 'IconUsers',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'ee247ca6-fdaa-4a56-87a2-730cf84f5f29',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-3213-4ddf-9494-6422bcff8d7c',
- }),
}),
pointOfContactForOpportunities: getFlatFieldMetadataMock({
id: '7580c1b1-e8f9-480b-bd41-38b20df35777',
@@ -477,34 +437,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '0e55bf63-1ffb-4f74-89f2-edd5a6a6686c',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-911b-4a7d-b67b-918aa9a5b33a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '0e55bf63-1ffb-4f74-89f2-edd5a6a6686c',
- standardId: '20202020-8dfb-42fc-92b6-01afb759ed16',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'pointOfContact',
- label: 'Point of Contact',
- defaultValue: null,
- description: 'Opportunity point of contact',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'pointOfContactId',
- },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '7580c1b1-e8f9-480b-bd41-38b20df35777',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-8dfb-42fc-92b6-01afb759ed16',
- }),
}),
taskTargets: getFlatFieldMetadataMock({
id: '9609ca31-215e-47fd-9b3b-ab200acb2fa8',
@@ -529,34 +461,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '64225f87-96c4-4846-9462-e7aa3ad9e182',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-584b-4d3e-88b6-53ab1fa03c3a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '64225f87-96c4-4846-9462-e7aa3ad9e182',
- standardId: '20202020-c8a0-4e85-a016-87e2349cfbec',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'TaskTarget person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '9609ca31-215e-47fd-9b3b-ab200acb2fa8',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-c8a0-4e85-a016-87e2349cfbec',
- }),
}),
noteTargets: getFlatFieldMetadataMock({
id: '60388ed8-45f6-4fb5-8752-81c73e13f4ab',
@@ -581,34 +485,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '560c71ff-254f-4baf-a4d1-054c53444f41',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-c8fc-4258-8250-15905d3fcfec',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '560c71ff-254f-4baf-a4d1-054c53444f41',
- standardId: '20202020-38ca-4aab-92f5-8a605ca2e4c5',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'NoteTarget person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '60388ed8-45f6-4fb5-8752-81c73e13f4ab',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-38ca-4aab-92f5-8a605ca2e4c5',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
@@ -633,34 +509,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-4073-4117-9cf1-203bcdc91cbd',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '013cec20-e9cc-42db-b9b9-ff6bd0f52abd',
- standardId: '20202020-c428-4f40-b6f3-86091511c41c',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'Favorite person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'a1a72bee-1c15-4598-ba23-67ba8e3e505d',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-c428-4f40-b6f3-86091511c41c',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '367ad117-de09-466c-94f8-ce99d951b5ce',
@@ -685,34 +533,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '6938c2ec-ebcc-4f30-8d38-2c9c40228c53',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-cd97-451f-87fa-bcb789bdbf3a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '6938c2ec-ebcc-4f30-8d38-2c9c40228c53',
- standardId: '20202020-0158-4aa2-965c-5cdafe21ffa2',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'Attachment person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '367ad117-de09-466c-94f8-ce99d951b5ce',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-0158-4aa2-965c-5cdafe21ffa2',
- }),
}),
messageParticipants: getFlatFieldMetadataMock({
id: '22dcab3c-939c-4b8d-bd7c-4c4d58588460',
@@ -737,34 +557,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'e95d7d1a-9101-4048-b019-d2f8bc110328',
relationTargetObjectMetadataId: 'edb170fd-a0c2-4619-b1a9-293cf07437c4',
universalIdentifier: '20202020-498e-4c61-8158-fa04f0638334',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'e95d7d1a-9101-4048-b019-d2f8bc110328',
- standardId: '20202020-249d-4e0f-82cd-1b9df5cd3da2',
- objectMetadataId: 'edb170fd-a0c2-4619-b1a9-293cf07437c4',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'Person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '22dcab3c-939c-4b8d-bd7c-4c4d58588460',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-249d-4e0f-82cd-1b9df5cd3da2',
- }),
}),
calendarEventParticipants: getFlatFieldMetadataMock({
id: '9e82a873-2988-4d9d-af04-81f2d947f4ec',
@@ -789,34 +581,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'e39f443d-3282-47a3-a24d-47ed604d58be',
relationTargetObjectMetadataId: 'a4c662b6-e08d-40a5-ae55-82ed8f4edf78',
universalIdentifier: '20202020-52ee-45e9-a702-b64b3753e3a9',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'e39f443d-3282-47a3-a24d-47ed604d58be',
- standardId: '20202020-5761-4842-8186-e1898ef93966',
- objectMetadataId: 'a4c662b6-e08d-40a5-ae55-82ed8f4edf78',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'Person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '9e82a873-2988-4d9d-af04-81f2d947f4ec',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-5761-4842-8186-e1898ef93966',
- }),
}),
timelineActivities: getFlatFieldMetadataMock({
id: 'b1457347-545b-4a42-9c68-bc655952229a',
@@ -841,34 +605,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'dbd02754-4bef-4149-b39d-54759983ab47',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-a43e-4873-9c23-e522de906ce5',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'dbd02754-4bef-4149-b39d-54759983ab47',
- standardId: '20202020-c414-45b9-a60a-ac27aa96229f',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'person',
- label: 'Person',
- defaultValue: null,
- description: 'Event person',
- icon: 'IconUser',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'personId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'b1457347-545b-4a42-9c68-bc655952229a',
- relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- universalIdentifier: '20202020-c414-45b9-a60a-ac27aa96229f',
- }),
}),
intro: getFlatFieldMetadataMock({
id: '94c95bfa-88bc-4271-87c2-08e6df084a15',
@@ -893,7 +629,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '94c95bfa-88bc-4271-87c2-08e6df084a15',
- flatRelationTargetFieldMetadata: null,
}),
whatsapp: getFlatFieldMetadataMock({
id: 'adc26aa8-d146-49d2-a037-77e15d8b20fc',
@@ -923,7 +658,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'adc26aa8-d146-49d2-a037-77e15d8b20fc',
- flatRelationTargetFieldMetadata: null,
}),
workPreference: getFlatFieldMetadataMock({
id: '421b5788-94dd-40b0-8d5f-6c649d7464c4',
@@ -970,7 +704,6 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '421b5788-94dd-40b0-8d5f-6c649d7464c4',
- flatRelationTargetFieldMetadata: null,
}),
performanceRating: getFlatFieldMetadataMock({
id: 'f75b0e71-e34c-4bc9-bb91-55a94127ab82',
@@ -1026,6 +759,5 @@ export const PERSON_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'f75b0e71-e34c-4bc9-bb91-55a94127ab82',
- flatRelationTargetFieldMetadata: null,
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock.ts
index bf54ffb8f70..d92aedd9f4d 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock.ts
@@ -3,9 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
export const PET_FLAT_FIELDS_MOCK = {
noteTargets: getFlatFieldMetadataMock({
@@ -31,34 +29,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'd88d0737-e83a-47b1-b701-8edfe4a2ae2e',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-01fd-4f37-99dc-9427a444018a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'd88d0737-e83a-47b1-b701-8edfe4a2ae2e',
- standardId: '20202020-c54e-4804-8b0d-8795e5166432',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'pet',
- label: 'Pet',
- defaultValue: null,
- description: 'NoteTargets Pet',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'petId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '98afd46e-0259-4c87-969d-16e7e660e007',
- relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- universalIdentifier: '20202020-c54e-4804-8b0d-8795e5166432',
- }),
}),
id: getFlatFieldMetadataMock({
id: 'ce25501a-1cc6-44c5-9158-b602db0efaca',
@@ -83,7 +53,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
name: getFlatFieldMetadataMock({
id: '4311d4e0-ce63-479c-a4da-5b244e2348cc',
@@ -108,7 +77,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-ba07-4ffd-ba63-009491f5749c',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '0bbe259b-0fd1-43ca-922f-1c0b7960efbe',
@@ -133,7 +101,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: 'c96d123d-4c13-47ee-85bf-00428ce5e242',
@@ -158,7 +125,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'bbfd9b09-be13-4232-af2c-585a9137aa62',
@@ -183,7 +149,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '2090b892-376c-4349-990d-6a789b53e31d',
@@ -208,7 +173,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-be0e-4971-865b-32ca87cbb315',
- flatRelationTargetFieldMetadata: null,
}),
position: getFlatFieldMetadataMock({
id: '3087f7da-f422-4b69-9b95-fadef79dd12a',
@@ -233,7 +197,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-c2bd-4e16-bb9a-c8b0411bf49d',
- flatRelationTargetFieldMetadata: null,
}),
timelineActivities: getFlatFieldMetadataMock({
id: '4eb74f21-1cb4-46b5-b3bb-4e41108e70d9',
@@ -258,34 +221,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3cb86390-4ee7-42fa-bd1e-bd6326b47610',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3cb86390-4ee7-42fa-bd1e-bd6326b47610',
- standardId: '20202020-d88f-4020-8c85-d6c600903762',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'pet',
- label: 'Pet',
- defaultValue: null,
- description: 'TimelineActivities Pet',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'petId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '4eb74f21-1cb4-46b5-b3bb-4e41108e70d9',
- relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- universalIdentifier: '20202020-d88f-4020-8c85-d6c600903762',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
@@ -310,34 +245,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'd34b4048-bf0c-4c61-8ffe-59f1838a2cc4',
- standardId: '20202020-1bd7-4d10-80dc-968b9f5d1a8a',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'pet',
- label: 'Pet',
- defaultValue: null,
- description: 'Favorites Pet',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'petId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '80bc4e7a-6bd1-4f2b-98b1-6333c631cc1a',
- relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- universalIdentifier: '20202020-1bd7-4d10-80dc-968b9f5d1a8a',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '231903d0-3b14-47ed-9a88-fbf11031c451',
@@ -362,34 +269,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '317a33ef-117e-4953-86d4-c4a9670a2ce3',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-8d59-46ca-b7b2-73d167712134',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '317a33ef-117e-4953-86d4-c4a9670a2ce3',
- standardId: '20202020-b715-4658-8b6a-5359824dbddd',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'pet',
- label: 'Pet',
- defaultValue: null,
- description: 'Attachments Pet',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'petId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '231903d0-3b14-47ed-9a88-fbf11031c451',
- relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- universalIdentifier: '20202020-b715-4658-8b6a-5359824dbddd',
- }),
}),
taskTargets: getFlatFieldMetadataMock({
id: '3cae8259-ece8-4b81-9044-f5abae5ff25c',
@@ -414,34 +293,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3955a4b4-1c10-4ce8-a92e-98e727ee7aec',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-0860-4566-b865-bff3c626c303',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3955a4b4-1c10-4ce8-a92e-98e727ee7aec',
- standardId: '20202020-07d9-4d04-8b73-a39ab65943f1',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'pet',
- label: 'Pet',
- defaultValue: null,
- description: 'TaskTargets Pet',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'petId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '3cae8259-ece8-4b81-9044-f5abae5ff25c',
- relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- universalIdentifier: '20202020-07d9-4d04-8b73-a39ab65943f1',
- }),
}),
searchVector: getFlatFieldMetadataMock({
id: '0db37175-e573-43e4-bd83-fa71923fde0c',
@@ -466,7 +317,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '70e56537-18ef-4811-b1c7-0a444006b815',
- flatRelationTargetFieldMetadata: null,
}),
species: getFlatFieldMetadataMock({
id: '0292cc51-246f-40b8-99e8-3345dac0e688',
@@ -534,7 +384,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '0292cc51-246f-40b8-99e8-3345dac0e688',
- flatRelationTargetFieldMetadata: null,
}),
traits: getFlatFieldMetadataMock({
id: '5aaf6be0-b9f5-4222-9810-941d5ab58527',
@@ -602,7 +451,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '5aaf6be0-b9f5-4222-9810-941d5ab58527',
- flatRelationTargetFieldMetadata: null,
}),
comments: getFlatFieldMetadataMock({
id: '2e726631-d80a-4594-9a5a-3cca0c2a50a9',
@@ -627,7 +475,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '2e726631-d80a-4594-9a5a-3cca0c2a50a9',
- flatRelationTargetFieldMetadata: null,
}),
age: getFlatFieldMetadataMock({
id: 'ed1573cf-b29e-4d4f-a8e3-19d472d28c0d',
@@ -652,7 +499,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'ed1573cf-b29e-4d4f-a8e3-19d472d28c0d',
- flatRelationTargetFieldMetadata: null,
}),
location: getFlatFieldMetadataMock({
id: '7b05e127-d0ea-422a-8f98-ef48f41d4388',
@@ -686,7 +532,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '7b05e127-d0ea-422a-8f98-ef48f41d4388',
- flatRelationTargetFieldMetadata: null,
}),
vetPhone: getFlatFieldMetadataMock({
id: '92c856ef-5b4b-4202-8c23-b2f22f959eda',
@@ -716,7 +561,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '92c856ef-5b4b-4202-8c23-b2f22f959eda',
- flatRelationTargetFieldMetadata: null,
}),
vetEmail: getFlatFieldMetadataMock({
id: '2c89697d-925a-485c-a0ed-adf2f1228e0f',
@@ -741,7 +585,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '2c89697d-925a-485c-a0ed-adf2f1228e0f',
- flatRelationTargetFieldMetadata: null,
}),
birthday: getFlatFieldMetadataMock({
id: '13c5b4ed-5746-494f-856b-081bdbb4a8ec',
@@ -766,7 +609,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '13c5b4ed-5746-494f-856b-081bdbb4a8ec',
- flatRelationTargetFieldMetadata: null,
}),
isGoodWithKids: getFlatFieldMetadataMock({
id: 'ec3bf27e-70e6-4d4a-932e-6ef026013603',
@@ -791,7 +633,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'ec3bf27e-70e6-4d4a-932e-6ef026013603',
- flatRelationTargetFieldMetadata: null,
}),
pictures: getFlatFieldMetadataMock({
id: '8aa0a700-c308-4d8b-8fbd-f545daa8980a',
@@ -820,7 +661,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '8aa0a700-c308-4d8b-8fbd-f545daa8980a',
- flatRelationTargetFieldMetadata: null,
}),
averageCostOfKibblePerMonth: getFlatFieldMetadataMock({
id: '37421848-b64d-4827-be33-da4e337acbb6',
@@ -845,7 +685,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '37421848-b64d-4827-be33-da4e337acbb6',
- flatRelationTargetFieldMetadata: null,
}),
makesOwnerThinkOf: getFlatFieldMetadataMock({
id: '84b874dc-983d-47eb-9c67-54f557a99f60',
@@ -870,7 +709,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '84b874dc-983d-47eb-9c67-54f557a99f60',
- flatRelationTargetFieldMetadata: null,
}),
soundSwag: getFlatFieldMetadataMock({
id: '42e6c0d2-6d00-4c77-b179-890af8c56236',
@@ -926,7 +764,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '42e6c0d2-6d00-4c77-b179-890af8c56236',
- flatRelationTargetFieldMetadata: null,
}),
bio: getFlatFieldMetadataMock({
id: 'fa0ec409-0f29-4b19-b304-31d1018a2344',
@@ -951,7 +788,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'fa0ec409-0f29-4b19-b304-31d1018a2344',
- flatRelationTargetFieldMetadata: null,
}),
interestingFacts: getFlatFieldMetadataMock({
id: '2b806a74-e7a5-4ec7-b902-67cf811e8bda',
@@ -976,7 +812,6 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '2b806a74-e7a5-4ec7-b902-67cf811e8bda',
- flatRelationTargetFieldMetadata: null,
}),
extraData: getFlatFieldMetadataMock({
id: 'a79bd7c8-c7ce-416a-9d12-a05335c9c596',
@@ -1001,6 +836,5 @@ export const PET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: 'a79bd7c8-c7ce-416a-9d12-a05335c9c596',
- flatRelationTargetFieldMetadata: null,
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock.ts
index 690b80294d0..f2f3b9f6e4a 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock.ts
@@ -3,9 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
export const ROCKET_FLAT_FIELDS_MOCK = {
id: getFlatFieldMetadataMock({
@@ -31,7 +29,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
name: getFlatFieldMetadataMock({
id: '9c10de36-1ade-4be1-af78-c4fc55669fbd',
@@ -56,7 +53,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-ba07-4ffd-ba63-009491f5749c',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '7aa0896a-82dd-43c0-b38f-a316a8064d51',
@@ -81,7 +77,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '1ca95b19-f02d-43c1-b9ae-8a9d522bb34b',
@@ -106,7 +101,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'aae8d11a-27b3-4844-a68f-a2023ae12443',
@@ -131,7 +125,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '23ebf744-88ad-4d0f-9084-a63e29c4655b',
@@ -156,7 +149,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-be0e-4971-865b-32ca87cbb315',
- flatRelationTargetFieldMetadata: null,
}),
position: getFlatFieldMetadataMock({
id: '2f1976a6-ae59-43c5-85bc-49fb8fd03e18',
@@ -181,7 +173,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-c2bd-4e16-bb9a-c8b0411bf49d',
- flatRelationTargetFieldMetadata: null,
}),
timelineActivities: getFlatFieldMetadataMock({
id: '53a223cc-a445-420d-8698-1a9137039448',
@@ -206,34 +197,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'eebb9590-817b-4a51-88f7-9792aa8e0a59',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'eebb9590-817b-4a51-88f7-9792aa8e0a59',
- standardId: '20202020-0be6-444e-88f0-12e0c64ac27d',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'rocket',
- label: 'Rocket',
- defaultValue: null,
- description: 'TimelineActivities Rocket',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'rocketId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '53a223cc-a445-420d-8698-1a9137039448',
- relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- universalIdentifier: '20202020-0be6-444e-88f0-12e0c64ac27d',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '14010360-f3c2-442e-b05f-43c30158f246',
@@ -258,34 +221,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '9448627d-725d-499e-a071-90fd5cfcf0ea',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-a4a7-4686-b296-1c6c3482ee21',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '9448627d-725d-499e-a071-90fd5cfcf0ea',
- standardId: '20202020-78f7-4d7d-86e9-7562ced0b381',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'rocket',
- label: 'Rocket',
- defaultValue: null,
- description: 'Favorites Rocket',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'rocketId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '14010360-f3c2-442e-b05f-43c30158f246',
- relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- universalIdentifier: '20202020-78f7-4d7d-86e9-7562ced0b381',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: 'f5984acf-5128-42ac-840f-9d2888423699',
@@ -310,34 +245,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'ba23019c-7f25-42c3-8138-622e61c42968',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-8d59-46ca-b7b2-73d167712134',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'ba23019c-7f25-42c3-8138-622e61c42968',
- standardId: '20202020-ca2d-47c0-8253-9d0b662fb01a',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'rocket',
- label: 'Rocket',
- defaultValue: null,
- description: 'Attachments Rocket',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'rocketId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'f5984acf-5128-42ac-840f-9d2888423699',
- relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- universalIdentifier: '20202020-ca2d-47c0-8253-9d0b662fb01a',
- }),
}),
noteTargets: getFlatFieldMetadataMock({
id: 'c91376fb-20bd-47c7-8922-b64f7db51cfa',
@@ -362,34 +269,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '4212b3d7-dd9f-4da9-85f7-2fa69a42296f',
relationTargetObjectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
universalIdentifier: '20202020-01fd-4f37-99dc-9427a444018a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '4212b3d7-dd9f-4da9-85f7-2fa69a42296f',
- standardId: '20202020-52b6-4d5e-8f21-ed8b7c09c4a9',
- objectMetadataId: '12e3cb51-c3de-4192-b0d5-965d48d001c0',
- type: FieldMetadataType.RELATION,
- name: 'rocket',
- label: 'Rocket',
- defaultValue: null,
- description: 'NoteTargets Rocket',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'rocketId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'c91376fb-20bd-47c7-8922-b64f7db51cfa',
- relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- universalIdentifier: '20202020-52b6-4d5e-8f21-ed8b7c09c4a9',
- }),
}),
taskTargets: getFlatFieldMetadataMock({
id: '80e3b587-69ec-48bc-a872-20105c3b7df4',
@@ -414,34 +293,6 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'a7e80fd8-76bc-45ed-b843-a2b87ef4d601',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-0860-4566-b865-bff3c626c303',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'a7e80fd8-76bc-45ed-b843-a2b87ef4d601',
- standardId: '20202020-b98f-473d-85fb-8cebc40b9a50',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'rocket',
- label: 'Rocket',
- defaultValue: null,
- description: 'TaskTargets Rocket',
- icon: 'IconBuildingSkyscraper',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'rocketId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '80e3b587-69ec-48bc-a872-20105c3b7df4',
- relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- universalIdentifier: '20202020-b98f-473d-85fb-8cebc40b9a50',
- }),
}),
searchVector: getFlatFieldMetadataMock({
id: 'e7609ea3-5a88-4d64-b0c1-eefd4602361a',
@@ -466,6 +317,5 @@ export const ROCKET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '70e56537-18ef-4811-b1c7-0a444006b815',
- flatRelationTargetFieldMetadata: null,
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/task-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/task-flat-fields.mock.ts
index e3e278abf0a..abc8fb036c6 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/task-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/task-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-7d47-4690-8a98-98b9a0c05dd8',
- flatRelationTargetFieldMetadata: null,
}),
title: getFlatFieldMetadataMock({
id: '88e4eeac-1d47-4e44-a795-bb5ca93c6557',
@@ -57,7 +55,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b386-4cb7-aa5a-08d4a4d92680',
- flatRelationTargetFieldMetadata: null,
}),
bodyV2: getFlatFieldMetadataMock({
id: '161570ed-7fcd-4172-a5d1-c773cd9afe76',
@@ -82,7 +79,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-4aa0-4ae8-898d-7df0afd47ab1',
- flatRelationTargetFieldMetadata: null,
}),
dueAt: getFlatFieldMetadataMock({
id: '1723b01e-e10b-4410-8cc2-3e0b937754e4',
@@ -107,7 +103,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-fd99-40da-951b-4cb9a352fce3',
- flatRelationTargetFieldMetadata: null,
}),
status: getFlatFieldMetadataMock({
id: '44924cd6-fa70-4239-8c22-f17107f83574',
@@ -154,7 +149,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-70bc-48f9-89c5-6aa730b151e0',
- flatRelationTargetFieldMetadata: null,
}),
createdBy: getFlatFieldMetadataMock({
id: '575c3d51-5cdc-4ff0-aa67-dcc7f1ba2448',
@@ -183,7 +177,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-1a04-48ab-a567-576965ae5387',
- flatRelationTargetFieldMetadata: null,
}),
searchVector: getFlatFieldMetadataMock({
id: 'bc00547b-b4c5-4d49-a4f1-97159df5cbc1',
@@ -208,7 +201,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-4746-4e2f-870c-52b02c67c90d',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: 'dc9b18f9-237c-40ba-97c1-e92c2d7c8e2e',
@@ -233,7 +225,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '10c9e428-0739-48a6-8c39-28e6935dfb7c',
@@ -258,7 +249,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: 'cafcc785-7940-4d27-92e3-ba4b5be5af03',
@@ -283,7 +273,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'aa440383-fb91-492c-948f-5b57275cf8e1',
@@ -308,7 +297,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
taskTargets: getFlatFieldMetadataMock({
id: 'cd08bc00-d02c-48d4-a1ac-a0cfa13742b7',
@@ -333,34 +321,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'c906885c-315a-4783-942e-6caafecf2031',
relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
universalIdentifier: '20202020-de9c-4d0e-a452-713d4a3e5fc7',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'c906885c-315a-4783-942e-6caafecf2031',
- standardId: '20202020-e881-457a-8758-74aaef4ae78a',
- objectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- type: FieldMetadataType.RELATION,
- name: 'task',
- label: 'Task',
- defaultValue: null,
- description: 'TaskTarget task',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'taskId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'cd08bc00-d02c-48d4-a1ac-a0cfa13742b7',
- relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- universalIdentifier: '20202020-e881-457a-8758-74aaef4ae78a',
- }),
}),
attachments: getFlatFieldMetadataMock({
id: '00fd339a-6431-465d-9524-09b5c804f497',
@@ -385,34 +345,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'bd823f17-f923-4f0d-8533-51d7bc062975',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-794d-4783-a8ff-cecdb15be139',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'bd823f17-f923-4f0d-8533-51d7bc062975',
- standardId: '20202020-51e5-4621-9cf8-215487951c4b',
- objectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
- type: FieldMetadataType.RELATION,
- name: 'task',
- label: 'Task',
- defaultValue: null,
- description: 'Attachment task',
- icon: 'IconNotes',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'taskId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '00fd339a-6431-465d-9524-09b5c804f497',
- relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- universalIdentifier: '20202020-51e5-4621-9cf8-215487951c4b',
- }),
}),
assignee: getFlatFieldMetadataMock({
id: '0e18f5e1-32c3-4daa-b282-ab64fb629b20',
@@ -441,30 +373,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '68779392-f0ec-42b4-9d89-9645ae84039d',
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
universalIdentifier: '20202020-065a-4f42-a906-e20422c1753f',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '68779392-f0ec-42b4-9d89-9645ae84039d',
- standardId: '20202020-61dc-4a1c-99e8-38ebf8d2bbeb',
- objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
- type: FieldMetadataType.RELATION,
- name: 'assignedTasks',
- label: 'Assigned tasks',
- defaultValue: null,
- description: 'Tasks assigned to the workspace member',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '0e18f5e1-32c3-4daa-b282-ab64fb629b20',
- relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- universalIdentifier: '20202020-61dc-4a1c-99e8-38ebf8d2bbeb',
- }),
}),
timelineActivities: getFlatFieldMetadataMock({
id: '3536b3af-76a2-44f5-9d89-1961a0a0a763',
@@ -489,34 +397,6 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '187eaeb8-62c8-4925-815f-946b4768b786',
relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
universalIdentifier: '20202020-c778-4278-99ee-23a2837aee64',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '187eaeb8-62c8-4925-815f-946b4768b786',
- standardId: '20202020-b2f5-415c-9135-a31dfe49501b',
- objectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- type: FieldMetadataType.RELATION,
- name: 'task',
- label: 'Task',
- defaultValue: null,
- description: 'Event task',
- icon: 'IconTargetArrow',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.SET_NULL,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'taskId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '3536b3af-76a2-44f5-9d89-1961a0a0a763',
- relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- universalIdentifier: '20202020-b2f5-415c-9135-a31dfe49501b',
- }),
}),
favorites: getFlatFieldMetadataMock({
id: '33e4eff0-ff0f-4530-802a-cd630481ee84',
@@ -541,33 +421,5 @@ export const TASK_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
relationTargetObjectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
universalIdentifier: '20202020-4d1d-41ac-b13b-621631298d65',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'db16ab78-ea3f-4b67-93e3-6ad9ab1b7273',
- standardId: '20202020-1b1b-4b3b-8b1b-7f8d6a1d7d5c',
- objectMetadataId: 'f4749ffb-dde8-44ff-8b01-d3fc82df0ba2',
- type: FieldMetadataType.RELATION,
- name: 'task',
- label: 'Task',
- defaultValue: null,
- description: 'Favorite task',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: {
- onDelete: RelationOnDeleteAction.CASCADE,
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'taskId',
- },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '33e4eff0-ff0f-4530-802a-cd630481ee84',
- relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- universalIdentifier: '20202020-1b1b-4b3b-8b1b-7f8d6a1d7d5c',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/tasktarget-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/tasktarget-flat-fields.mock.ts
index 529376ba529..a71f46cc84a 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/tasktarget-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/tasktarget-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '040784f1-4b59-4033-b4c7-7ed426d70b65',
@@ -57,7 +55,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: '2b0881e8-767b-4428-ae25-b6ac1a97293a',
@@ -82,7 +79,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '42b66721-a65c-41bf-a1d7-971ff732be12',
@@ -107,7 +103,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
task: getFlatFieldMetadataMock({
id: 'c906885c-315a-4783-942e-6caafecf2031',
@@ -136,30 +131,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'cd08bc00-d02c-48d4-a1ac-a0cfa13742b7',
relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
universalIdentifier: '20202020-e881-457a-8758-74aaef4ae78a',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'cd08bc00-d02c-48d4-a1ac-a0cfa13742b7',
- standardId: '20202020-de9c-4d0e-a452-713d4a3e5fc7',
- objectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'Relations',
- defaultValue: null,
- description: 'Task targets',
- icon: 'IconArrowUpRight',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'c906885c-315a-4783-942e-6caafecf2031',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-de9c-4d0e-a452-713d4a3e5fc7',
- }),
}),
person: getFlatFieldMetadataMock({
id: '64225f87-96c4-4846-9462-e7aa3ad9e182',
@@ -188,30 +159,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '9609ca31-215e-47fd-9b3b-ab200acb2fa8',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-c8a0-4e85-a016-87e2349cfbec',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '9609ca31-215e-47fd-9b3b-ab200acb2fa8',
- standardId: '20202020-584b-4d3e-88b6-53ab1fa03c3a',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'Tasks',
- defaultValue: null,
- description: 'Tasks tied to the contact',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '64225f87-96c4-4846-9462-e7aa3ad9e182',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-584b-4d3e-88b6-53ab1fa03c3a',
- }),
}),
company: getFlatFieldMetadataMock({
id: 'ec11b025-1476-4e84-81c5-cf5b5c776edc',
@@ -240,30 +187,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '4f9138da-cd36-4df4-98f9-ebabe036b141',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-4703-4a4e-948c-487b0c60a92c',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '4f9138da-cd36-4df4-98f9-ebabe036b141',
- standardId: '20202020-cb17-4a61-8f8f-3be6730480de',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'Tasks',
- defaultValue: null,
- description: 'Tasks tied to the company',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'ec11b025-1476-4e84-81c5-cf5b5c776edc',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-cb17-4a61-8f8f-3be6730480de',
- }),
}),
opportunity: getFlatFieldMetadataMock({
id: '49afc8d8-dde3-4d19-aa6b-bd16a751b114',
@@ -292,30 +215,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'c0c9f9ac-0d40-4206-90e5-0d1e14f8a09f',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-6cb2-4c01-a9a5-aca3dbc11d41',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'c0c9f9ac-0d40-4206-90e5-0d1e14f8a09f',
- standardId: '20202020-59c0-4179-a208-4a255f04a5be',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'Tasks',
- defaultValue: null,
- description: 'Tasks tied to the opportunity',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: false,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '49afc8d8-dde3-4d19-aa6b-bd16a751b114',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-59c0-4179-a208-4a255f04a5be',
- }),
}),
rocket: getFlatFieldMetadataMock({
id: 'a7e80fd8-76bc-45ed-b843-a2b87ef4d601',
@@ -344,30 +243,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '80e3b587-69ec-48bc-a872-20105c3b7df4',
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
universalIdentifier: '20202020-b98f-473d-85fb-8cebc40b9a50',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '80e3b587-69ec-48bc-a872-20105c3b7df4',
- standardId: '20202020-0860-4566-b865-bff3c626c303',
- objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'TaskTargets',
- defaultValue: null,
- description: 'TaskTargets tied to the Rocket',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'a7e80fd8-76bc-45ed-b843-a2b87ef4d601',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-0860-4566-b865-bff3c626c303',
- }),
}),
pet: getFlatFieldMetadataMock({
id: '3955a4b4-1c10-4ce8-a92e-98e727ee7aec',
@@ -396,30 +271,6 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3cae8259-ece8-4b81-9044-f5abae5ff25c',
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
universalIdentifier: '20202020-07d9-4d04-8b73-a39ab65943f1',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3cae8259-ece8-4b81-9044-f5abae5ff25c',
- standardId: '20202020-0860-4566-b865-bff3c626c303',
- objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'TaskTargets',
- defaultValue: null,
- description: 'TaskTargets tied to the Pet',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '3955a4b4-1c10-4ce8-a92e-98e727ee7aec',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-0860-4566-b865-bff3c626c303',
- }),
}),
surveyResult: getFlatFieldMetadataMock({
id: 'caa8b6cf-c668-4fb0-abf9-e49645668020',
@@ -448,29 +299,5 @@ export const TASKTARGET_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'c4004fb2-3464-4302-b3c3-a32a1879fed7',
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
universalIdentifier: '20202020-c376-450d-8a49-a573f23eafd8',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'c4004fb2-3464-4302-b3c3-a32a1879fed7',
- standardId: '20202020-0860-4566-b865-bff3c626c303',
- objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
- type: FieldMetadataType.RELATION,
- name: 'taskTargets',
- label: 'TaskTargets',
- defaultValue: null,
- description: 'TaskTargets tied to the Survey result',
- icon: 'IconCheckbox',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'caa8b6cf-c668-4fb0-abf9-e49645668020',
- relationTargetObjectMetadataId: 'bb2b29b8-7f46-4106-a8ae-3a32df9c9166',
- universalIdentifier: '20202020-0860-4566-b865-bff3c626c303',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/timelineactivity-flat-fields.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/timelineactivity-flat-fields.mock.ts
index a54bdca6cf9..1d1ba25f637 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/timelineactivity-flat-fields.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/timelineactivity-flat-fields.mock.ts
@@ -4,7 +4,6 @@ import { DateDisplayFormat } from 'src/engine/metadata-modules/field-metadata/in
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { getRelationTargetFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
@@ -32,7 +31,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-9526-4993-b339-c4318c4d39f0',
- flatRelationTargetFieldMetadata: null,
}),
name: getFlatFieldMetadataMock({
id: '8271b048-89c8-4db9-ba49-e20d1e634cea',
@@ -57,7 +55,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-7207-46e8-9dab-849505ae8497',
- flatRelationTargetFieldMetadata: null,
}),
properties: getFlatFieldMetadataMock({
id: '5067203a-5fc0-47a7-8fb3-466e8edc8e82',
@@ -82,7 +79,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-f142-4b04-b91b-6a2b4af3bf11',
- flatRelationTargetFieldMetadata: null,
}),
linkedRecordCachedName: getFlatFieldMetadataMock({
id: '6192bb0a-dcff-4ce9-9373-6b3efd74def3',
@@ -107,7 +103,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-cfdb-4bef-bbce-a29f41230934',
- flatRelationTargetFieldMetadata: null,
}),
linkedRecordId: getFlatFieldMetadataMock({
id: '1a1b9069-0274-4d89-a189-6944ebd8afd5',
@@ -132,7 +127,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-2e0e-48c0-b445-ee6c1e61687d',
- flatRelationTargetFieldMetadata: null,
}),
linkedObjectMetadataId: getFlatFieldMetadataMock({
id: 'aa0a6096-ddd6-44b3-a8c1-ec4c1ec70c52',
@@ -157,7 +151,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-c595-449d-9f89-562758c9ee69',
- flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: 'e78264fa-48bc-46cd-afc1-c5f2b5eb9472',
@@ -182,7 +175,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
- flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: 'cb8b2800-2a6e-443c-b671-df51c8a8ccdc',
@@ -207,7 +199,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
- flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: 'cc7b974c-4cb3-4b61-821a-824b4764fc6b',
@@ -232,7 +223,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
- flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: '544fdd41-6418-43e4-a46a-086c2c55924d',
@@ -257,7 +247,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
- flatRelationTargetFieldMetadata: null,
}),
workspaceMember: getFlatFieldMetadataMock({
id: 'c8d9c315-034a-4ffd-a6b3-e6386092d0a8',
@@ -286,30 +275,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'b2172f26-093d-4c9f-86c3-f0bcfaf54ad6',
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
universalIdentifier: '20202020-af23-4479-9a30-868edc474b36',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'b2172f26-093d-4c9f-86c3-f0bcfaf54ad6',
- standardId: '20202020-e15b-47b8-94fe-8200e3c66615',
- objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Events',
- defaultValue: null,
- description: 'Events linked to the workspace member',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'c8d9c315-034a-4ffd-a6b3-e6386092d0a8',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-e15b-47b8-94fe-8200e3c66615',
- }),
}),
person: getFlatFieldMetadataMock({
id: 'dbd02754-4bef-4149-b39d-54759983ab47',
@@ -338,30 +303,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'b1457347-545b-4a42-9c68-bc655952229a',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-c414-45b9-a60a-ac27aa96229f',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'b1457347-545b-4a42-9c68-bc655952229a',
- standardId: '20202020-a43e-4873-9c23-e522de906ce5',
- objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Events',
- defaultValue: null,
- description: 'Events linked to the person',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'dbd02754-4bef-4149-b39d-54759983ab47',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-a43e-4873-9c23-e522de906ce5',
- }),
}),
company: getFlatFieldMetadataMock({
id: 'fd8cabe5-7dc8-4d6a-8053-43434488b3e4',
@@ -390,30 +331,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'cc78390f-f570-4c2c-9f19-2a8fef67f4f6',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-04ad-4221-a744-7a8278a5ce21',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'cc78390f-f570-4c2c-9f19-2a8fef67f4f6',
- standardId: '20202020-0414-4daf-9c0d-64fe7b27f89f',
- objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline Activities linked to the company',
- icon: 'IconIconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: 'fd8cabe5-7dc8-4d6a-8053-43434488b3e4',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-0414-4daf-9c0d-64fe7b27f89f',
- }),
}),
opportunity: getFlatFieldMetadataMock({
id: '026cbaa7-860c-4ed4-b878-8d78849e6c28',
@@ -442,30 +359,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '7826944b-3b21-4448-892e-5a2a68161313',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-7664-4a35-a3df-580d389fd527',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '7826944b-3b21-4448-892e-5a2a68161313',
- standardId: '20202020-30e2-421f-96c7-19c69d1cf631',
- objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline Activities linked to the opportunity.',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '026cbaa7-860c-4ed4-b878-8d78849e6c28',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-30e2-421f-96c7-19c69d1cf631',
- }),
}),
note: getFlatFieldMetadataMock({
id: '2b9f1c90-9e35-4ccc-8d84-b42de31ef127',
@@ -494,30 +387,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '1207d260-db2c-41d4-bb09-34ea1188978f',
relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
universalIdentifier: '20202020-ec55-4135-8da5-3a20badc0156',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '1207d260-db2c-41d4-bb09-34ea1188978f',
- standardId: '20202020-7030-42f8-929c-1a57b25d6bce',
- objectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline Activities linked to the note.',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '2b9f1c90-9e35-4ccc-8d84-b42de31ef127',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-7030-42f8-929c-1a57b25d6bce',
- }),
}),
task: getFlatFieldMetadataMock({
id: '187eaeb8-62c8-4925-815f-946b4768b786',
@@ -546,30 +415,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3536b3af-76a2-44f5-9d89-1961a0a0a763',
relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
universalIdentifier: '20202020-b2f5-415c-9135-a31dfe49501b',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '3536b3af-76a2-44f5-9d89-1961a0a0a763',
- standardId: '20202020-c778-4278-99ee-23a2837aee64',
- objectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline Activities linked to the task.',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '187eaeb8-62c8-4925-815f-946b4768b786',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-c778-4278-99ee-23a2837aee64',
- }),
}),
workflow: getFlatFieldMetadataMock({
id: '9973da2e-cc65-41b2-8f52-4130cfa31fc6',
@@ -598,30 +443,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '384db7b5-3551-4774-9258-7082b26b502a',
relationTargetObjectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
universalIdentifier: '20202020-616c-4ad3-a2e9-c477c341e295',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '384db7b5-3551-4774-9258-7082b26b502a',
- standardId: '20202020-906e-486a-a798-131a5f081faf',
- objectMetadataId: '664c19a5-0693-45d4-a4e5-76c3717db83c',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline activities linked to the workflow',
- icon: null,
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '9973da2e-cc65-41b2-8f52-4130cfa31fc6',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-906e-486a-a798-131a5f081faf',
- }),
}),
workflowVersion: getFlatFieldMetadataMock({
id: '7e5b7033-8c4f-4bdc-9156-6954c268fbb8',
@@ -650,30 +471,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '767ab66d-f3d7-4bac-b0be-f738f8c6fda7',
relationTargetObjectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
universalIdentifier: '20202020-74f1-4711-a129-e14ca0ecd744',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '767ab66d-f3d7-4bac-b0be-f738f8c6fda7',
- standardId: '20202020-fcb0-4695-b17e-3b43a421c633',
- objectMetadataId: '99cf5f27-b41d-4f25-a23b-9e47d27dae9b',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline activities linked to the version',
- icon: null,
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '7e5b7033-8c4f-4bdc-9156-6954c268fbb8',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-fcb0-4695-b17e-3b43a421c633',
- }),
}),
workflowRun: getFlatFieldMetadataMock({
id: '1cd2b19c-f5c5-40b4-ad41-cc7aa3e955b2',
@@ -702,30 +499,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'c17fe20f-fcd1-4b21-ac5c-c595473a3af8',
relationTargetObjectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
universalIdentifier: '20202020-96f0-401b-9186-a3a0759225ac',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'c17fe20f-fcd1-4b21-ac5c-c595473a3af8',
- standardId: '20202020-af4d-4eb0-babc-eb960a45b356',
- objectMetadataId: '06d95e96-b050-443f-946e-dd276d291a2f',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'Timeline Activities',
- defaultValue: null,
- description: 'Timeline activities linked to the run',
- icon: null,
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: true,
- relationTargetFieldMetadataId: '1cd2b19c-f5c5-40b4-ad41-cc7aa3e955b2',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-af4d-4eb0-babc-eb960a45b356',
- }),
}),
rocket: getFlatFieldMetadataMock({
id: 'eebb9590-817b-4a51-88f7-9792aa8e0a59',
@@ -754,30 +527,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '53a223cc-a445-420d-8698-1a9137039448',
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
universalIdentifier: '20202020-0be6-444e-88f0-12e0c64ac27d',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '53a223cc-a445-420d-8698-1a9137039448',
- standardId: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'TimelineActivities',
- defaultValue: null,
- description: 'TimelineActivities tied to the Rocket',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: 'eebb9590-817b-4a51-88f7-9792aa8e0a59',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- }),
}),
pet: getFlatFieldMetadataMock({
id: '3cb86390-4ee7-42fa-bd1e-bd6326b47610',
@@ -806,30 +555,6 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '4eb74f21-1cb4-46b5-b3bb-4e41108e70d9',
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
universalIdentifier: '20202020-d88f-4020-8c85-d6c600903762',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: '4eb74f21-1cb4-46b5-b3bb-4e41108e70d9',
- standardId: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'TimelineActivities',
- defaultValue: null,
- description: 'TimelineActivities tied to the Pet',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '3cb86390-4ee7-42fa-bd1e-bd6326b47610',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- }),
}),
surveyResult: getFlatFieldMetadataMock({
id: '06010d88-dc3c-4172-92c9-8c73924f950d',
@@ -858,29 +583,5 @@ export const TIMELINEACTIVITY_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'd544ccb4-b0df-43bb-b70c-57ae477838c4',
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
universalIdentifier: '20202020-d13a-4342-8df0-df48bd783787',
- flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
- id: 'd544ccb4-b0df-43bb-b70c-57ae477838c4',
- standardId: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
- type: FieldMetadataType.RELATION,
- name: 'timelineActivities',
- label: 'TimelineActivities',
- defaultValue: null,
- description: 'TimelineActivities tied to the Survey result',
- icon: 'IconTimelineEvent',
- standardOverrides: null,
- options: null,
- settings: { relationType: RelationType.ONE_TO_MANY },
- isCustom: false,
- isActive: true,
- isSystem: true,
- isNullable: true,
- isUnique: false,
- workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
- isLabelSyncedWithName: false,
- relationTargetFieldMetadataId: '06010d88-dc3c-4172-92c9-8c73924f950d',
- relationTargetObjectMetadataId: '3090f830-c4b1-41a1-8e18-815760830bec',
- universalIdentifier: '20202020-f1ef-4ba4-8f33-1a4577afa477',
- }),
}),
} as const satisfies Record;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap
index 44a8a221aef..d35b2d2f6c2 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap
@@ -89,159 +89,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any,
"defaultValue": null,
"description": "new field description",
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": null,
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": "new field description",
- "flatRelationTargetFieldMetadata": null,
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": null,
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconCat",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Pets",
- "labelSingular": "Pet",
- "namePlural": "pets",
- "nameSingular": "pet",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconRelationOneToMany",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "newFieldLabel",
- "morphId": Any,
- "name": "newFieldPets",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "relationType": "ONE_TO_MANY",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "MORPH_RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A rocket",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconRocket",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Rockets",
- "labelSingular": "Rocket",
- "namePlural": "rockets",
- "nameSingular": "rocket",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconPet",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "Pet",
- "morphId": null,
- "name": "pet",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "joinColumnName": "petId",
- "onDelete": "SET_NULL",
- "relationType": "MANY_TO_ONE",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": null,
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconCat",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Pets",
- "labelSingular": "Pet",
- "namePlural": "pets",
- "nameSingular": "pet",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
"icon": "IconRelationOneToMany",
"id": Any,
"isActive": true,
@@ -272,97 +119,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any,
"defaultValue": null,
"description": null,
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": "new field description",
- "flatRelationTargetFieldMetadata": null,
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": null,
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconCat",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Pets",
- "labelSingular": "Pet",
- "namePlural": "pets",
- "nameSingular": "pet",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconRelationOneToMany",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "newFieldLabel",
- "morphId": Any,
- "name": "newFieldPets",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "relationType": "ONE_TO_MANY",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "MORPH_RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A rocket",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconRocket",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Rockets",
- "labelSingular": "Rocket",
- "namePlural": "rockets",
- "nameSingular": "rocket",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
"icon": "IconPet",
"id": Any,
"isActive": true,
@@ -395,159 +151,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any,
"defaultValue": null,
"description": "new field description",
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": null,
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": "new field description",
- "flatRelationTargetFieldMetadata": null,
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A company",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconBuildingSkyscraper",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": false,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Companies",
- "labelSingular": "Company",
- "namePlural": "companies",
- "nameSingular": "company",
- "shortcut": "C",
- "standardId": Any,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconRelationOneToMany",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "newFieldLabel",
- "morphId": Any,
- "name": "newFieldCompanies",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "relationType": "ONE_TO_MANY",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "MORPH_RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A rocket",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconRocket",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Rockets",
- "labelSingular": "Rocket",
- "namePlural": "rockets",
- "nameSingular": "rocket",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconBuilding",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "Company",
- "morphId": null,
- "name": "company",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "joinColumnName": "companyId",
- "onDelete": "SET_NULL",
- "relationType": "MANY_TO_ONE",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A company",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconBuildingSkyscraper",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": false,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Companies",
- "labelSingular": "Company",
- "namePlural": "companies",
- "nameSingular": "company",
- "shortcut": "C",
- "standardId": Any,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
"icon": "IconRelationOneToMany",
"id": Any,
"isActive": true,
@@ -578,97 +181,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any,
"defaultValue": null,
"description": null,
- "flatRelationTargetFieldMetadata": {
- "createdAt": Any,
- "defaultValue": null,
- "description": "new field description",
- "flatRelationTargetFieldMetadata": null,
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A company",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconBuildingSkyscraper",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": false,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Companies",
- "labelSingular": "Company",
- "namePlural": "companies",
- "nameSingular": "company",
- "shortcut": "C",
- "standardId": Any,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "icon": "IconRelationOneToMany",
- "id": Any,
- "isActive": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isNullable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "isUnique": null,
- "label": "newFieldLabel",
- "morphId": Any,
- "name": "newFieldCompanies",
- "objectMetadataId": Any,
- "options": null,
- "relationTargetFieldMetadataId": Any,
- "relationTargetObjectMetadataId": Any,
- "settings": {
- "relationType": "ONE_TO_MANY",
- },
- "standardId": null,
- "standardOverrides": null,
- "type": "MORPH_RELATION",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
- "flatRelationTargetObjectMetadata": {
- "applicationId": null,
- "createdAt": Any,
- "description": "A rocket",
- "duplicateCriteria": null,
- "flatFieldMetadatas": [],
- "icon": "IconRocket",
- "id": Any,
- "imageIdentifierFieldMetadataId": null,
- "isActive": true,
- "isAuditLogged": true,
- "isCustom": true,
- "isLabelSyncedWithName": false,
- "isRemote": false,
- "isSearchable": true,
- "isSystem": false,
- "isUIReadOnly": false,
- "labelIdentifierFieldMetadataId": Any,
- "labelPlural": "Rockets",
- "labelSingular": "Rocket",
- "namePlural": "rockets",
- "nameSingular": "rocket",
- "shortcut": null,
- "standardId": null,
- "standardOverrides": null,
- "targetTableName": "DEPRECATED",
- "universalIdentifier": Any,
- "updatedAt": Any,
- "workspaceId": Any,
- },
"icon": "IconBuilding",
"id": Any,
"isActive": true,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts
index fc35b048e5b..071e3bf1662 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts
@@ -1,39 +1,34 @@
import { extractRecordIdsAndDatesAsExpectAny } from 'test/utils/extract-record-ids-and-dates-as-expect-any';
import { type EachTestingContext } from 'twenty-shared/testing';
import { FieldMetadataType } from 'twenty-shared/types';
+import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
-import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
-import { fromCreateFieldInputToFlatFieldMetadatasToCreate } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
+import {
+ fromCreateFieldInputToFlatFieldMetadatasToCreate,
+ type FromCreateFieldInputToFlatObjectMetadataArgs,
+} from 'src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util';
import { COMPANY_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock';
+import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/flat-object-metadata-maps.mock';
import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-const existingFlatObjectMetadataMaps = [
+const flatObjectMetadataMaps = [
COMPANY_FLAT_OBJECT_MOCK,
ROCKET_FLAT_OBJECT_MOCK,
PET_FLAT_OBJECT_MOCK,
].reduce((flatObjectMetadataMaps, flatObjectMetadata) => {
- return replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata: {
- ...flatObjectMetadata,
- flatFieldMetadatas: [],
- },
- flatObjectMetadataMaps,
+ return addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: flatObjectMetadata,
+ flatEntityMaps: flatObjectMetadataMaps,
});
-}, FLAT_OBJECT_METADATA_MAPS_MOCKS);
+}, EMPTY_FLAT_ENTITY_MAPS);
type TestCase = EachTestingContext<{
- input: {
- rawCreateFieldInput: CreateFieldInput &
- Required>;
- workspaceId: string;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- };
+ input: FromCreateFieldInputToFlatObjectMetadataArgs;
expected: 'success' | 'fail';
}>;
@@ -47,13 +42,12 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
'should create morph relation field metadata with valid input on rocket object to pet object',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [
{
type: RelationType.ONE_TO_MANY,
@@ -70,7 +64,7 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps,
},
expected: 'success',
},
@@ -87,8 +81,11 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
if (result.status !== 'success') {
throw new Error('Should never occur, typecheck');
}
+ jestExpectToBeDefined(
+ input.createFieldInput.morphRelationsCreationPayload,
+ );
expect(result.result.flatFieldMetadatas.length).toBe(
- input.rawCreateFieldInput.morphRelationsCreationPayload.length * 2,
+ input.createFieldInput.morphRelationsCreationPayload.length * 2,
);
expect(result).toMatchSnapshot(
extractRecordIdsAndDatesAsExpectAny(result),
@@ -103,17 +100,16 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
title: 'should fail when morphRelationsCreationPayload is missing',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: undefined as any,
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
@@ -122,17 +118,16 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
title: 'should fail when morphRelationsCreationPayload is empty array',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
@@ -142,13 +137,12 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
'should fail when morphRelationsCreationPayload has different relation types',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [
{
type: RelationType.ONE_TO_MANY,
@@ -165,7 +159,7 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
@@ -175,13 +169,12 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
'should fail when morphRelationsCreationPayload has several references to same object metadata',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [
{
type: RelationType.MANY_TO_ONE,
@@ -198,7 +191,7 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
@@ -208,13 +201,12 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
'should fail when morphRelationsCreationPayload has invalid relation payload',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [
{
type: RelationType.ONE_TO_MANY,
@@ -224,7 +216,7 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
@@ -233,13 +225,12 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
title: 'should fail when target object metadata is not found',
context: {
input: {
- rawCreateFieldInput: {
+ createFieldInput: {
name: 'newField',
label: 'newFieldLabel',
description: 'new field description',
type: FieldMetadataType.MORPH_RELATION,
objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- workspaceId: mockWorkspaceId,
morphRelationsCreationPayload: [
{
type: RelationType.ONE_TO_MANY,
@@ -250,7 +241,7 @@ describe('fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test s
],
},
workspaceId: mockWorkspaceId,
- existingFlatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
+ flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
},
expected: 'fail',
},
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts
index f8e3ff17a4e..5a759756a47 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts
@@ -1,9 +1,8 @@
import { Module } from '@nestjs/common';
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
-
-import { FlatFieldMetadataTypeValidatorService } from './services/flat-field-metadata-type-validator.service';
-import { FlatFieldMetadataValidatorService } from './services/flat-field-metadata-validator.service';
+import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service';
+import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
@Module({
imports: [FeatureFlagModule],
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts
index 7c9b35c096a..d5679b97759 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts
@@ -7,11 +7,11 @@ import { FieldMetadataType } from 'twenty-shared/types';
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 { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
-import { ValidateOneFieldMetadataArgs } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
import { type FlatFieldMetadataTypeValidator } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type';
import { FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type';
import { validateEnumSelectFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util';
import { validateMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util';
+import { ValidateOneFieldMetadataArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
@Injectable()
export class FlatFieldMetadataTypeValidatorService {
constructor(private readonly featureFlagService: FeatureFlagService) {}
@@ -49,10 +49,11 @@ export class FlatFieldMetadataTypeValidatorService {
return [];
},
MORPH_RELATION: async ({
- workspaceId,
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
- otherFlatObjectMetadataMapsToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
+ workspaceId,
}) => {
const isMorphRelationEnabled =
await this.featureFlagService.isFeatureEnabled(
@@ -71,23 +72,26 @@ export class FlatFieldMetadataTypeValidatorService {
}
return validateMorphOrRelationFlatFieldMetadata({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
});
},
MULTI_SELECT: ({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}) =>
validateEnumSelectFlatFieldMetadata({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}),
NUMBER: async (_args) => {
@@ -103,31 +107,35 @@ export class FlatFieldMetadataTypeValidatorService {
return [];
},
RATING: ({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}) =>
validateEnumSelectFlatFieldMetadata({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}),
RAW_JSON: async (_args) => {
return [];
},
RELATION: ({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}) =>
validateMorphOrRelationFlatFieldMetadata({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}),
RICH_TEXT: async (_args) => {
return [];
@@ -136,16 +144,18 @@ export class FlatFieldMetadataTypeValidatorService {
return [];
},
SELECT: ({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}) =>
validateEnumSelectFlatFieldMetadata({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
}),
TEXT: async (_args) => {
return [];
@@ -161,11 +171,12 @@ export class FlatFieldMetadataTypeValidatorService {
public async validateFlatFieldMetadataTypeSpecificities<
T extends FieldMetadataType = FieldMetadataType,
>({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
- }: ValidateOneFieldMetadataArgs): Promise<
+ }: ValidateOneFieldMetadataArgs & { workspaceId: string }): Promise<
FlatFieldMetadataValidationError[]
> {
const fieldMetadataTypeValidator =
@@ -187,10 +198,11 @@ export class FlatFieldMetadataTypeValidatorService {
}
return await fieldMetadataTypeValidator({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
workspaceId,
- otherFlatObjectMetadataMapsToValidate,
});
}
}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts
new file mode 100644
index 00000000000..5ebb980ce9f
--- /dev/null
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts
@@ -0,0 +1,64 @@
+import { Injectable } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+
+import { Repository } from 'typeorm';
+
+import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
+import { CacheStorageService } from 'src/engine/core-modules/cache-storage/services/cache-storage.service';
+import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
+import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { fromFieldMetadataEntityToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util';
+import { WorkspaceFlatMapCache } from 'src/engine/workspace-flat-map-cache/decorators/workspace-flat-map-cache.decorator';
+import { WorkspaceFlatMapCacheService } from 'src/engine/workspace-flat-map-cache/services/workspace-flat-map-cache.service';
+
+@Injectable()
+@WorkspaceFlatMapCache('flatFieldMetadataMaps')
+export class WorkspaceFlatFieldMetadataMapCacheService extends WorkspaceFlatMapCacheService<
+ FlatEntityMaps
+> {
+ constructor(
+ @InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
+ cacheStorageService: CacheStorageService,
+ @InjectRepository(FieldMetadataEntity)
+ private readonly fieldMetadataRepository: Repository,
+ ) {
+ super(cacheStorageService);
+ }
+
+ protected async computeFlatMap({
+ workspaceId,
+ }: {
+ workspaceId: string;
+ }): Promise> {
+ const fieldMetadatas = await this.fieldMetadataRepository.find({
+ where: {
+ workspaceId,
+ },
+ withDeleted: true,
+ relations: [],
+ });
+
+ const flatFieldMetadataMaps = fieldMetadatas.reduce<
+ FlatEntityMaps
+ >((flatEntityMaps, field) => {
+ const flatFieldMetadata =
+ fromFieldMetadataEntityToFlatFieldMetadata(field);
+
+ return {
+ byId: {
+ ...flatEntityMaps.byId,
+ [flatFieldMetadata.id]: flatFieldMetadata,
+ },
+ idByUniversalIdentifier: {
+ ...flatEntityMaps.idByUniversalIdentifier,
+ [flatFieldMetadata.universalIdentifier]: flatFieldMetadata.id,
+ },
+ };
+ }, EMPTY_FLAT_ENTITY_MAPS);
+
+ return flatFieldMetadataMaps;
+ }
+}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type.ts
index 3a76742401c..306d7308317 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type.ts
@@ -1,11 +1,11 @@
import { type FieldMetadataType } from 'twenty-shared/types';
-import { type ValidateOneFieldMetadataArgs } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type';
+import { type ValidateOneFieldMetadataArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
export type FlatFieldMetadataTypeValidator = {
[P in FieldMetadataType]: (
- args: ValidateOneFieldMetadataArgs,
+ args: ValidateOneFieldMetadataArgs
& { workspaceId: string },
) =>
| FlatFieldMetadataValidationError[]
| Promise;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts
index c2cd9f86d12..0705628d414 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts
@@ -1,9 +1,6 @@
import { type FieldMetadataType } from 'twenty-shared/types';
import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
-import { type AssignTypeIfIsMorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/assign-type-if-is-morph-or-relation-field-metadata-type.type';
-import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
-import { type FlatObjectMetadataWithoutFields } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export const fieldMetadataRelationProperties = [
'relationTargetFieldMetadata',
@@ -19,15 +16,5 @@ export type FieldMetadataEntityRelationProperties =
export type FlatFieldMetadata =
Omit, FieldMetadataEntityRelationProperties> & {
universalIdentifier: string;
- flatRelationTargetFieldMetadata: AssignTypeIfIsMorphOrRelationFieldMetadataType<
- Omit<
- FlatFieldMetadata,
- 'flatRelationTargetFieldMetadata' | 'flatRelationTargetObjectMetadata'
- >,
- T
- >;
- flatRelationTargetObjectMetadata: AssignTypeIfIsMorphOrRelationFieldMetadataType<
- FlatObjectMetadataWithoutFields,
- T
- >;
+ // Could add indexField metadatas and so on ?
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type.ts
deleted file mode 100644
index 1ba60f7d29b..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { type FieldMetadataType } from 'twenty-shared/types';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-
-export type FlatRelationTargetFieldMetadata = FlatFieldMetadata<
- FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
->['flatRelationTargetFieldMetadata'];
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util.ts
index c3dca49f101..8c35d974a8f 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util.ts
@@ -1,17 +1,20 @@
import { FieldMetadataType } from 'twenty-shared/types';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { findFlatFieldMetadatasRelatedToMorphRelationOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util';
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
+import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
flatFieldMetadata,
- flatObjectMetadataMaps,
+ flatObjectMetadata,
+ flatFieldMetadataMaps,
}: {
+ flatObjectMetadata: FlatObjectMetadata;
flatFieldMetadata: FlatFieldMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
+ flatFieldMetadataMaps: FlatEntityMaps;
}): FlatFieldMetadata[] => {
if (
isFlatFieldMetadataOfType(flatFieldMetadata, FieldMetadataType.RELATION)
@@ -19,7 +22,7 @@ export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
return [
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
flatFieldMetadata,
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
}),
];
}
@@ -32,7 +35,8 @@ export const computeFlatFieldMetadataRelatedFlatFieldMetadata = ({
) {
return findFlatFieldMetadatasRelatedToMorphRelationOrThrow({
flatFieldMetadata,
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
});
}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util.ts
index 366f71e3c91..e921db08d1d 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util.ts
@@ -1,48 +1,42 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
+ FlatEntityMapsException,
+ FlatEntityMapsExceptionCode,
+} from 'src/engine/core-modules/common/exceptions/flat-entity-maps.exception';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
+import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
+import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export type FindAllMorphRelationFlatFieldMetadatasOrThrowArgs = {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
+ flatFieldMetadataMaps: FlatEntityMaps;
flatFieldMetadata: FlatFieldMetadata;
+ flatObjectMetadata: FlatObjectMetadata;
};
export const findAllOthersMorphRelationFlatFieldMetadatasOrThrow = ({
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
flatFieldMetadata: morphRelationFlatFieldMetadata,
}: FindAllMorphRelationFlatFieldMetadatasOrThrowArgs): FlatFieldMetadata[] => {
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[
- morphRelationFlatFieldMetadata.objectMetadataId
- ];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'Morph field relation object metadata not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
if (
- !isDefined(
- flatObjectMetadataWithFlatFieldMaps.fieldsById[
- morphRelationFlatFieldMetadata.id
- ],
- )
+ !isDefined(flatFieldMetadataMaps.byId[morphRelationFlatFieldMetadata.id])
) {
- throw new FlatObjectMetadataMapsException(
- 'Morph relation field not found in related object metadata',
- FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_NOT_FOUND,
+ throw new FlatEntityMapsException(
+ 'Morph relation field not found in flat field metadata maps',
+ FlatEntityMapsExceptionCode.ENTITY_NOT_FOUND,
);
}
- return flatObjectMetadataWithFlatFieldMaps.flatFieldMetadatas.filter(
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
+ });
+
+ return objectFlatFieldMetadatas.filter(
(
flatFieldMetadata,
): flatFieldMetadata is FlatFieldMetadata =>
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util.ts
index 38732b23b1b..d4501863c33 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-flat-field-metadatas-related-to-morph-relation-or-throw.util.ts
@@ -1,23 +1,27 @@
import { type FieldMetadataType } from 'twenty-shared/types';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { findAllOthersMorphRelationFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-all-others-morph-relation-flat-field-metadatas-or-throw.util';
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
+import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
export type FindFlatFieldMetadatasRelatedToMorphRelationOrThrowArgs = {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
+ flatFieldMetadataMaps: FlatEntityMaps;
flatFieldMetadata: FlatFieldMetadata;
+ flatObjectMetadata: FlatObjectMetadata;
};
export const findFlatFieldMetadatasRelatedToMorphRelationOrThrow = ({
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
flatFieldMetadata: morphRelationFlatFieldMetadata,
+ flatObjectMetadata,
}: FindFlatFieldMetadatasRelatedToMorphRelationOrThrowArgs): FlatFieldMetadata[] => {
const allMorphFlatFieldMetadatas =
findAllOthersMorphRelationFlatFieldMetadatasOrThrow({
flatFieldMetadata: morphRelationFlatFieldMetadata,
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
});
return [
@@ -27,7 +31,7 @@ export const findFlatFieldMetadatasRelatedToMorphRelationOrThrow = ({
const relationTargetFlatFieldMetadata =
findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
flatFieldMetadata,
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
});
if (flatFieldMetadata.id === morphRelationFlatFieldMetadata.id) {
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util.ts
new file mode 100644
index 00000000000..af7ede5da1c
--- /dev/null
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util.ts
@@ -0,0 +1,32 @@
+import { isDefined } from 'twenty-shared/utils';
+
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util';
+import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
+
+type FindObjectFieldsInFlatFieldMetadataMapsArgs = {
+ flatFieldMetadataMaps: FlatEntityMaps;
+ flatObjectMetadata: FlatObjectMetadata;
+};
+export const findObjectFieldsInFlatFieldMetadataMapsOrThrow = ({
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
+}: FindObjectFieldsInFlatFieldMetadataMapsArgs): {
+ objectFlatFieldMetadataById: FlatEntityMaps;
+ objectFlatFieldMetadatas: FlatFieldMetadata[];
+} => {
+ const objectFlatFieldMetadataById = getSubFlatEntityMapsOrThrow({
+ flatEntityIds: flatObjectMetadata.fieldMetadataIds,
+ flatEntityMaps: flatFieldMetadataMaps,
+ });
+
+ const objectFlatFieldMetadatas = Object.values(
+ objectFlatFieldMetadataById.byId,
+ ).filter(isDefined);
+
+ return {
+ objectFlatFieldMetadataById,
+ objectFlatFieldMetadatas,
+ };
+};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util.ts
index 930155cde69..16d14fe064c 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util.ts
@@ -1,5 +1,6 @@
import { isDefined } from 'twenty-shared/utils';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
@@ -7,31 +8,20 @@ import {
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
export type GetRelationFlatFieldMetadatasUtilArgs = {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
+ flatFieldMetadataMaps: FlatEntityMaps;
flatFieldMetadata: FlatFieldMetadata;
};
export const findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow = ({
- flatObjectMetadataMaps,
+ flatFieldMetadataMaps,
flatFieldMetadata,
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata => {
- const { relationTargetFieldMetadataId, relationTargetObjectMetadataId } =
- flatFieldMetadata;
+ const { relationTargetFieldMetadataId } = flatFieldMetadata;
- const relatedFlatObjectMetadata =
- flatObjectMetadataMaps.byId[relationTargetObjectMetadataId];
-
- if (!isDefined(relatedFlatObjectMetadata)) {
- throw new FieldMetadataException(
- `Deleted field metadata relation object metadata target not found`,
- FieldMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
const relatedFlatFieldMetadata =
- relatedFlatObjectMetadata.fieldsById[relationTargetFieldMetadataId];
+ flatFieldMetadataMaps.byId[relationTargetFieldMetadataId];
if (!isDefined(relatedFlatFieldMetadata)) {
throw new FieldMetadataException(
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata.util.ts
deleted file mode 100644
index 9f71f18f84b..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata.util.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import {
- findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow,
- type GetRelationFlatFieldMetadatasUtilArgs,
-} from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
-
-export const findRelationFlatFieldMetadataTargetFlatFieldMetadata = (
- args: GetRelationFlatFieldMetadatasUtilArgs,
-):
- | ReturnType<
- typeof findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow
- >
- | undefined => {
- try {
- return findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow(args);
- } catch {
- return undefined;
- }
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util.ts
index f2617e24615..779c8b78224 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-create-field-input-to-flat-field-metadatas-to-create.util.ts
@@ -9,6 +9,7 @@ import { v4 } from 'uuid';
import { type FieldMetadataOptions } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-options.interface';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { generateRatingOptions } from 'src/engine/metadata-modules/field-metadata/utils/generate-rating-optionts.util';
@@ -18,19 +19,16 @@ import { fromMorphRelationCreateFieldInputToFlatFieldMetadatas } from 'src/engin
import { fromRelationCreateFieldInputToFlatFieldMetadatas } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadatas.util';
import { getDefaultFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
-type FromCreateFieldInputToFlatObjectMetadataArgs = {
- rawCreateFieldInput: Omit;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
+export type FromCreateFieldInputToFlatObjectMetadataArgs = {
+ createFieldInput: Omit;
workspaceId: string;
-};
+} & Pick;
export const fromCreateFieldInputToFlatFieldMetadatasToCreate = async ({
- rawCreateFieldInput,
+ createFieldInput: rawCreateFieldInput,
workspaceId,
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
}: FromCreateFieldInputToFlatObjectMetadataArgs): Promise<
FieldInputTranspilationResult<{
flatFieldMetadatas: FlatFieldMetadata[];
@@ -46,15 +44,16 @@ export const fromCreateFieldInputToFlatFieldMetadatasToCreate = async ({
},
};
}
+
const createFieldInput =
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties(
rawCreateFieldInput,
['description', 'icon', 'label', 'name', 'objectMetadataId', 'type'],
);
- const parentFlatObjectMetadataWithFlatFieldMaps =
+ const parentFlatObjectMetadata =
existingFlatObjectMetadataMaps.byId[createFieldInput.objectMetadataId];
- if (!isDefined(parentFlatObjectMetadataWithFlatFieldMaps)) {
+ if (!isDefined(parentFlatObjectMetadata)) {
return {
status: 'fail',
error: {
@@ -65,11 +64,6 @@ export const fromCreateFieldInputToFlatFieldMetadatasToCreate = async ({
};
}
- const parentFlatObjectMetadata =
- fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata(
- parentFlatObjectMetadataWithFlatFieldMaps,
- );
-
const fieldMetadataId = v4();
const commonFlatFieldMetadata = getDefaultFlatFieldMetadata({
createFieldInput,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-delete-field-input-to-flat-field-metadatas-to-delete.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-delete-field-input-to-flat-field-metadatas-to-delete.util.ts
index a0365d86e49..877edfa4f63 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-delete-field-input-to-flat-field-metadatas-to-delete.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-delete-field-input-to-flat-field-metadatas-to-delete.util.ts
@@ -3,7 +3,9 @@ import {
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties,
} from 'twenty-shared/utils';
-import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
+import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
import { type DeleteOneFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/delete-field.input';
import {
FieldMetadataException,
@@ -11,22 +13,22 @@ import {
} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { computeFlatFieldMetadataRelatedFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util';
-import { findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
import { generateFlatIndexMetadataWithNameOrThrow } from 'src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util';
type FromDeleteFieldInputToFlatFieldMetadatasToDeleteArgs = {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- existingFlatIndexMaps: FlatEntityMaps;
deleteOneFieldInput: DeleteOneFieldInput;
-};
+} & Pick<
+ AllFlatEntityMaps,
+ 'flatFieldMetadataMaps' | 'flatIndexMaps' | 'flatObjectMetadataMaps'
+>;
// TODO refactor as a side effect service
export const fromDeleteFieldInputToFlatFieldMetadatasToDelete = ({
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
deleteOneFieldInput: rawDeleteOneInput,
- existingFlatIndexMaps,
+ flatIndexMaps: existingFlatIndexMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
}: FromDeleteFieldInputToFlatFieldMetadatasToDeleteArgs): {
flatFieldMetadatasToDelete: FlatFieldMetadata[];
flatIndexesToUpdate: FlatIndexMetadata[];
@@ -38,11 +40,10 @@ export const fromDeleteFieldInputToFlatFieldMetadatasToDelete = ({
['id'],
);
- const flatFieldMetadataToDelete =
- findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId({
- fieldMetadataId: fieldMetadataToDeleteId,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- });
+ const flatFieldMetadataToDelete = findFlatEntityByIdInFlatEntityMaps({
+ flatEntityId: fieldMetadataToDeleteId,
+ flatEntityMaps: existingFlatFieldMetadataMaps,
+ });
if (!isDefined(flatFieldMetadataToDelete)) {
throw new FieldMetadataException(
@@ -51,10 +52,23 @@ export const fromDeleteFieldInputToFlatFieldMetadatasToDelete = ({
);
}
+ const flatObjectMetadata = findFlatEntityByIdInFlatEntityMaps({
+ flatEntityId: flatFieldMetadataToDelete.objectMetadataId,
+ flatEntityMaps: existingFlatObjectMetadataMaps,
+ });
+
+ if (!isDefined(flatObjectMetadata)) {
+ throw new FieldMetadataException(
+ 'Field to delete object metadata not found',
+ FieldMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
+ );
+ }
+
const relatedFlatFieldMetadataToDelete =
computeFlatFieldMetadataRelatedFlatFieldMetadata({
flatFieldMetadata: flatFieldMetadataToDelete,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ flatObjectMetadata,
});
const flatFieldMetadatasToDelete = [
@@ -122,15 +136,20 @@ export const fromDeleteFieldInputToFlatFieldMetadatasToDelete = ({
};
}
- const flatObjectMetadata =
- findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: flatIndex.objectMetadataId,
+ const flatObjectMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityMaps: existingFlatObjectMetadataMaps,
+ flatEntityId: flatIndex.objectMetadataId,
+ });
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ flatObjectMetadata,
});
const newIndex = generateFlatIndexMetadataWithNameOrThrow({
flatObjectMetadata,
flatIndex,
+ objectFlatFieldMetadatas,
});
return {
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts
index a81084e1106..f7f3d721a30 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts
@@ -1,95 +1,18 @@
-import {
- FieldMetadataType,
- type RelationAndMorphRelationFieldMetadataType,
-} from 'twenty-shared/types';
+import { type FieldMetadataType } from 'twenty-shared/types';
import { removePropertiesFromRecord } from 'twenty-shared/utils';
import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
- FieldMetadataException,
- FieldMetadataExceptionCode,
-} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
-import {
- type FieldMetadataEntityRelationProperties,
type FlatFieldMetadata,
fieldMetadataRelationProperties,
} from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatRelationTargetFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type';
-import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util';
-import { fromObjectMetadataEntityToFlatObjectMetadataWithoutFields } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/from-object-metadata-entity-to-flat-object-metadata-without-fields.util';
-export const fromFieldMetadataEntityToFlatRelationTargetFieldMetadata = (
- fieldMetadataEntity: FieldMetadataEntity,
-): FlatRelationTargetFieldMetadata => {
- return {
- universalIdentifier:
- fieldMetadataEntity.standardId ?? fieldMetadataEntity.id,
- ...removePropertiesFromRecord(fieldMetadataEntity, [
- 'relationTargetObjectMetadata',
- 'relationTargetFieldMetadata',
- ]),
- };
-};
-
-// TODO refactor this method should not be recursive but depth 1
export const fromFieldMetadataEntityToFlatFieldMetadata = <
T extends FieldMetadataType,
>(
fieldMetadataEntity: FieldMetadataEntity,
// This is intended to be abstract
): FlatFieldMetadata => {
- if (
- isFieldMetadataEntityOfType(
- fieldMetadataEntity,
- FieldMetadataType.RELATION,
- ) ||
- isFieldMetadataEntityOfType(
- fieldMetadataEntity,
- FieldMetadataType.MORPH_RELATION,
- )
- ) {
- const fieldMetadataWithoutRelations = removePropertiesFromRecord<
- FieldMetadataEntity<
- FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
- >,
- FieldMetadataEntityRelationProperties
- >(fieldMetadataEntity, fieldMetadataRelationProperties);
-
- if (
- !isFieldMetadataEntityOfType(
- fieldMetadataEntity.relationTargetFieldMetadata,
- FieldMetadataType.RELATION,
- )
- ) {
- throw new FieldMetadataException(
- 'Relation target field is not a field metadata type relation',
- FieldMetadataExceptionCode.FIELD_METADATA_RELATION_MALFORMED,
- );
- }
-
- const flatRelationTargetFieldMetadata =
- fromFieldMetadataEntityToFlatRelationTargetFieldMetadata(
- fieldMetadataEntity.relationTargetFieldMetadata,
- );
-
- const flatRelationTargetObjectMetadata =
- fromObjectMetadataEntityToFlatObjectMetadataWithoutFields(
- fieldMetadataEntity.relationTargetObjectMetadata,
- );
-
- return {
- ...fieldMetadataWithoutRelations,
- universalIdentifier:
- fieldMetadataWithoutRelations.standardId ??
- fieldMetadataWithoutRelations.id,
- flatRelationTargetFieldMetadata,
- flatRelationTargetObjectMetadata,
- type: fieldMetadataEntity.type,
- } satisfies FlatFieldMetadata<
- FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
- >;
- }
-
const fieldMetadataWithoutRelations = removePropertiesFromRecord(
fieldMetadataEntity,
fieldMetadataRelationProperties,
@@ -100,7 +23,5 @@ export const fromFieldMetadataEntityToFlatFieldMetadata = <
universalIdentifier:
fieldMetadataWithoutRelations.standardId ??
fieldMetadataWithoutRelations.id,
- flatRelationTargetFieldMetadata: null,
- flatRelationTargetObjectMetadata: null,
};
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util.ts
index 23af2a40617..849ac774253 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-field-metadata-dto.util.ts
@@ -1,9 +1,8 @@
import { type FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatRelationTargetFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type';
export const fromFlatFieldMetadataToFieldMetadataDto = (
- flatFieldMetadata: FlatFieldMetadata | FlatRelationTargetFieldMetadata,
+ flatFieldMetadata: FlatFieldMetadata,
): FieldMetadataDTO => {
const {
createdAt,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util.ts
deleted file mode 100644
index 786d58a1566..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-import { fromObjectMetadataItemWithFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata.util';
-import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
-import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
-
-export type FromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMapsArgs =
- {
- objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps;
- objectMetadataMaps: ObjectMetadataMaps;
- };
-export const fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps =
- ({
- objectMetadataItemWithFieldMaps,
- objectMetadataMaps,
- }: FromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMapsArgs): FlatObjectMetadataWithFlatFieldMaps => {
- const flatObjectMetadata =
- fromObjectMetadataItemWithFieldMapsToFlatObjectMetadata({
- objectMetadataItemWithFieldMaps,
- objectMetadataMaps,
- });
-
- const initialAccumulator: Record = {};
-
- const fieldsById = flatObjectMetadata.flatFieldMetadatas.reduce(
- (acc, flatFieldMetadata) => ({
- ...acc,
- [flatFieldMetadata.id]: flatFieldMetadata,
- }),
- initialAccumulator,
- );
-
- const { fieldIdByJoinColumnName, fieldIdByName } =
- objectMetadataItemWithFieldMaps;
-
- return {
- ...flatObjectMetadata,
- fieldsById,
- fieldIdByJoinColumnName,
- fieldIdByName,
- };
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-or-relation-flat-field-metadata-to-relation-dto.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-or-relation-flat-field-metadata-to-relation-dto.util.ts
index 4c83ef9afac..8b2df193b0e 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-or-relation-flat-field-metadata-to-relation-dto.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-or-relation-flat-field-metadata-to-relation-dto.util.ts
@@ -4,23 +4,29 @@ import { fromFlatFieldMetadataToFieldMetadataDto } from 'src/engine/metadata-mod
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { fromFlatObjectMetadataToObjectMetadataDto } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util';
-export const fromMorphOrRelationFlatFieldMetadataToRelationDto = ({
- flatFieldMetadata,
- sourceFlatObjectMetadata,
-}: {
+type FromMorphOrRelationFlatFieldMetadataToRelationDtoArgs = {
sourceFlatObjectMetadata: FlatObjectMetadata;
- flatFieldMetadata: FlatFieldMetadata;
-}) => ({
- type: flatFieldMetadata.settings.relationType,
+ targetFlatObjectMetadata: FlatObjectMetadata;
+ sourceFlatFieldMetadata: FlatFieldMetadata;
+ targetFlatFieldMetadata: FlatFieldMetadata;
+};
+export const fromMorphOrRelationFlatFieldMetadataToRelationDto = ({
+ sourceFlatFieldMetadata,
+ sourceFlatObjectMetadata,
+ targetFlatFieldMetadata,
+ targetFlatObjectMetadata,
+}: FromMorphOrRelationFlatFieldMetadataToRelationDtoArgs) => ({
+ type: sourceFlatFieldMetadata.settings.relationType,
sourceObjectMetadata: fromFlatObjectMetadataToObjectMetadataDto(
sourceFlatObjectMetadata,
),
- sourceFieldMetadata:
- fromFlatFieldMetadataToFieldMetadataDto(flatFieldMetadata),
+ sourceFieldMetadata: fromFlatFieldMetadataToFieldMetadataDto(
+ sourceFlatFieldMetadata,
+ ),
targetObjectMetadata: fromFlatObjectMetadataToObjectMetadataDto(
- flatFieldMetadata.flatRelationTargetObjectMetadata,
+ targetFlatObjectMetadata,
),
targetFieldMetadata: fromFlatFieldMetadataToFieldMetadataDto(
- flatFieldMetadata.flatRelationTargetFieldMetadata,
+ targetFlatFieldMetadata,
),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-relation-create-field-input-to-flat-field-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-relation-create-field-input-to-flat-field-metadatas.util.ts
index ba3016354f3..94688357368 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-relation-create-field-input-to-flat-field-metadatas.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-morph-relation-create-field-input-to-flat-field-metadatas.util.ts
@@ -3,6 +3,7 @@ import { type FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { v4 } from 'uuid';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { computeMorphOrRelationFieldJoinColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-morph-or-relation-field-join-column-name.util';
@@ -12,14 +13,13 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m
import { generateMorphOrRelationFlatFieldMetadataPair } from 'src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util';
import { validateMorphRelationCreationPayload } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type FromMorphRelationCreateFieldInputToFlatFieldMetadatasArgs = {
createFieldInput: Omit & {
type: FieldMetadataType.MORPH_RELATION;
};
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
+ existingFlatObjectMetadataMaps: FlatEntityMaps;
sourceFlatObjectMetadata: FlatObjectMetadata;
workspaceId: string;
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadatas.util.ts
index 9278ed9f0f8..b78cf97b3e0 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadatas.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-relation-create-field-input-to-flat-field-metadatas.util.ts
@@ -2,6 +2,7 @@ import { t } from '@lingui/core/macro';
import { type FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { computeMorphOrRelationFieldJoinColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-morph-or-relation-field-join-column-name.util';
@@ -11,14 +12,13 @@ import {
type SourceTargetMorphOrRelationFlatFieldAndFlatIndex,
} from 'src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util';
import { validateRelationCreationPayload } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type FromRelationCreateFieldInputToFlatFieldMetadataArgs = {
createFieldInput: Omit & {
type: FieldMetadataType.RELATION;
};
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
+ existingFlatObjectMetadataMaps: FlatEntityMaps;
sourceFlatObjectMetadata: FlatObjectMetadata;
workspaceId: string;
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util.ts
index 9d0f8b4c20e..5e9970e339b 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util.ts
@@ -6,9 +6,14 @@ import {
import { v4 } from 'uuid';
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
+import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
import { FIELD_METADATA_STANDARD_OVERRIDES_PROPERTIES } from 'src/engine/metadata-modules/field-metadata/constants/field-metadata-standard-overrides-properties.constant';
import { type UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input';
-import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
+import {
+ FieldMetadataException,
+ FieldMetadataExceptionCode,
+} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { type FieldMetadataStandardOverridesProperties } from 'src/engine/metadata-modules/field-metadata/types/field-metadata-standard-overrides-properties.type';
import { FLAT_FIELD_METADATA_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-field-metadata/constants/flat-field-metadata-editable-properties.constant';
import { type FieldInputTranspilationResult } from 'src/engine/metadata-modules/flat-field-metadata/types/field-input-transpilation-result.type';
@@ -17,9 +22,6 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m
import { computeFlatFieldMetadataRelatedFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/compute-flat-field-metadata-related-flat-field-metadata.util';
import { recomputeIndexOnFlatFieldMetadataNameUpdate } from 'src/engine/metadata-modules/flat-field-metadata/utils/recompute-index-on-flat-field-metadata-name-update.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util';
-import { findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
type UpdatedFlatFieldMetadataAndIndexToUpdate = {
@@ -37,13 +39,17 @@ type SanitizedUpdateFieldInput = ReturnType<
type ApplyUpdatesToFlatFieldMetadataArgs = {
updatedEditableFieldProperties: SanitizedUpdateFieldInput;
fromFlatFieldMetadata: FlatFieldMetadata;
-} & Pick;
+} & Pick<
+ AllFlatEntityMaps,
+ 'flatIndexMaps' | 'flatObjectMetadataMaps' | 'flatFieldMetadataMaps'
+>;
const applyUpdatesToFlatFieldMetadata = ({
updatedEditableFieldProperties,
fromFlatFieldMetadata,
flatObjectMetadataMaps,
flatIndexMaps,
+ flatFieldMetadataMaps,
}: ApplyUpdatesToFlatFieldMetadataArgs) => {
return FLAT_FIELD_METADATA_EDITABLE_PROPERTIES.reduce(
({ flatFieldMetadata, flatIndexMetadataToUpdate }, property) => {
@@ -74,14 +80,14 @@ const applyUpdatesToFlatFieldMetadata = ({
let newFlatIndexMetadataToUpdate: FlatIndexMetadata[] = [];
if (property === 'name') {
- const flatObjectMetadata =
- findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps,
- objectMetadataId: flatFieldMetadata.objectMetadataId,
- });
+ const flatObjectMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityMaps: flatObjectMetadataMaps,
+ flatEntityId: flatFieldMetadata.objectMetadataId,
+ });
newFlatIndexMetadataToUpdate =
recomputeIndexOnFlatFieldMetadataNameUpdate({
+ flatFieldMetadataMaps,
flatObjectMetadata,
fromFlatFieldMetadata,
toFlatFieldMetadata: {
@@ -108,7 +114,10 @@ const applyUpdatesToFlatFieldMetadata = ({
type FromUpdateFieldInputToFlatFieldMetadataArgs = {
updateFieldInput: UpdateFieldInput;
-} & Pick;
+} & Pick<
+ AllFlatEntityMaps,
+ 'flatObjectMetadataMaps' | 'flatIndexMaps' | 'flatFieldMetadataMaps'
+>;
type FlatFieldMetadataAndIndexToUpdate = {
flatFieldMetadatasToUpdate: FlatFieldMetadata[];
@@ -117,6 +126,7 @@ type FlatFieldMetadataAndIndexToUpdate = {
export const fromUpdateFieldInputToFlatFieldMetadata = ({
flatIndexMaps,
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps,
updateFieldInput: rawUpdateFieldInput,
}: FromUpdateFieldInputToFlatFieldMetadataArgs): FieldInputTranspilationResult => {
const updateFieldInputInformalProperties =
@@ -129,11 +139,10 @@ export const fromUpdateFieldInputToFlatFieldMetadata = ({
FLAT_FIELD_METADATA_EDITABLE_PROPERTIES,
);
- const existingFlatFieldMetadataToUpdate =
- findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId({
- fieldMetadataId: updateFieldInputInformalProperties.id,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- });
+ const existingFlatFieldMetadataToUpdate = findFlatEntityByIdInFlatEntityMaps({
+ flatEntityId: updateFieldInputInformalProperties.id,
+ flatEntityMaps: flatFieldMetadataMaps,
+ });
if (!isDefined(existingFlatFieldMetadataToUpdate)) {
return {
@@ -146,37 +155,6 @@ export const fromUpdateFieldInputToFlatFieldMetadata = ({
};
}
- const flatObjectMetadataWithFlatFieldMaps =
- existingFlatObjectMetadataMaps.byId[
- existingFlatFieldMetadataToUpdate.objectMetadataId
- ];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- return {
- status: 'fail',
- error: {
- code: FieldMetadataExceptionCode.FIELD_METADATA_NOT_FOUND,
- message: 'Field metadata to update object metadata not found',
- userFriendlyMessage: t`Field metadata to update object metadata not found`,
- },
- };
- }
-
- const flatObjectMetadata =
- fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata(
- flatObjectMetadataWithFlatFieldMaps,
- );
-
- if (flatObjectMetadata.isRemote) {
- return {
- status: 'fail',
- error: {
- code: FieldMetadataExceptionCode.FIELD_MUTATION_NOT_ALLOWED,
- message: 'Remote objects are read-only',
- },
- };
- }
-
if (isStandardMetadata(existingFlatFieldMetadataToUpdate)) {
const invalidUpdatedProperties = Object.keys(
updatedEditableFieldProperties,
@@ -224,10 +202,23 @@ export const fromUpdateFieldInputToFlatFieldMetadata = ({
};
}
+ const flatObjectMetadata = findFlatEntityByIdInFlatEntityMaps({
+ flatEntityId: existingFlatFieldMetadataToUpdate.objectMetadataId,
+ flatEntityMaps: existingFlatObjectMetadataMaps,
+ });
+
+ if (!isDefined(flatObjectMetadata)) {
+ throw new FieldMetadataException(
+ 'Field to update object metadata not found',
+ FieldMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
+ );
+ }
+
const relatedFlatFieldMetadatasToUpdate =
computeFlatFieldMetadataRelatedFlatFieldMetadata({
flatFieldMetadata: existingFlatFieldMetadataToUpdate,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
});
const flatFieldMetadatasToUpdate = [
@@ -242,6 +233,7 @@ export const fromUpdateFieldInputToFlatFieldMetadata = ({
applyUpdatesToFlatFieldMetadata({
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
fromFlatFieldMetadata,
+ flatFieldMetadataMaps,
flatIndexMaps,
updatedEditableFieldProperties,
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util.ts
index b67a55caa93..910988a9232 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/generate-morph-or-relation-flat-field-metadata-pair.util.ts
@@ -86,7 +86,6 @@ export const generateMorphOrRelationFlatFieldMetadataPair = ({
options: null,
relationTargetFieldMetadataId: targetRelationTargetFieldMetadataId,
relationTargetObjectMetadataId: targetFlatObjectMetadata.id,
- flatRelationTargetObjectMetadata: targetFlatObjectMetadata,
};
const targetCreateFieldInput: CreateFieldInput = {
@@ -122,14 +121,16 @@ export const generateMorphOrRelationFlatFieldMetadataPair = ({
options: null,
relationTargetFieldMetadataId: sourceRelationTargetFieldMetadataId,
relationTargetObjectMetadataId: sourceFlatObjectMetadata.id,
- flatRelationTargetFieldMetadata: sourceFlatFieldMetadata,
- flatRelationTargetObjectMetadata: sourceFlatObjectMetadata,
};
const indexId = v4();
const createdAt = new Date();
const indexMetadata: FlatIndexMetadata =
generateFlatIndexMetadataWithNameOrThrow({
+ objectFlatFieldMetadatas:
+ relationCreationPayload.type === RelationType.MANY_TO_ONE
+ ? [sourceFlatFieldMetadata]
+ : [targetFlatFieldMetadata],
flatIndex: {
createdAt,
flatIndexFieldMetadatas: [
@@ -158,32 +159,14 @@ export const generateMorphOrRelationFlatFieldMetadataPair = ({
updatedAt: createdAt,
workspaceId,
},
- flatObjectMetadata: (relationCreationPayload.type ===
- RelationType.MANY_TO_ONE
- ? {
- ...sourceFlatObjectMetadata,
- flatFieldMetadatas: [
- ...sourceFlatObjectMetadata.flatFieldMetadatas,
- sourceFlatFieldMetadata,
- ],
- }
- : {
- ...targetFlatObjectMetadata,
- flatFieldMetadatas: [
- ...targetFlatObjectMetadata.flatFieldMetadatas,
- targetFlatFieldMetadata,
- ],
- }) as FlatObjectMetadata,
+ flatObjectMetadata:
+ relationCreationPayload.type === RelationType.MANY_TO_ONE
+ ? sourceFlatObjectMetadata
+ : targetFlatObjectMetadata,
});
return {
- flatFieldMetadatas: [
- {
- ...sourceFlatFieldMetadata,
- flatRelationTargetFieldMetadata: targetFlatFieldMetadata,
- },
- targetFlatFieldMetadata,
- ],
+ flatFieldMetadatas: [sourceFlatFieldMetadata, targetFlatFieldMetadata],
indexMetadatas: [indexMetadata],
};
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts
index 4be522f45e0..7f643b9b15a 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts
@@ -46,8 +46,6 @@ export const getDefaultFlatFieldMetadata = ({
type: createFieldInput.type,
universalIdentifier: fieldMetadataId,
workspaceId,
- flatRelationTargetFieldMetadata: null,
- flatRelationTargetObjectMetadata: null,
options: null,
defaultValue: defaultValue ?? generateDefaultValue(createFieldInput.type),
settings: settings ?? null,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-index-on-flat-field-metadata-name-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-index-on-flat-field-metadata-name-update.util.ts
index 1130b465f8f..9a37762b18d 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-index-on-flat-field-metadata-name-update.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-index-on-flat-field-metadata-name-update.util.ts
@@ -2,6 +2,7 @@ import { isDefined } from 'twenty-shared/utils';
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { generateFlatIndexMetadataWithNameOrThrow } from 'src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util';
@@ -10,13 +11,14 @@ type RecomputeIndexOnFlatFieldMetadataNameUpdateArgs = {
flatObjectMetadata: FlatObjectMetadata;
fromFlatFieldMetadata: FlatFieldMetadata;
toFlatFieldMetadata: Pick;
-} & Pick;
+} & Pick;
export const recomputeIndexOnFlatFieldMetadataNameUpdate = ({
fromFlatFieldMetadata,
toFlatFieldMetadata,
flatObjectMetadata,
flatIndexMaps,
+ flatFieldMetadataMaps,
}: RecomputeIndexOnFlatFieldMetadataNameUpdateArgs): FlatIndexMetadata[] => {
const relatedFlatIndexMetadata = Object.values(flatIndexMaps.byId).filter(
(flatIndexMetadata): flatIndexMetadata is FlatIndexMetadata =>
@@ -33,26 +35,29 @@ export const recomputeIndexOnFlatFieldMetadataNameUpdate = ({
return [];
}
- const optimisticFlatObjectMetadata = {
- ...flatObjectMetadata,
- flatFieldMetadatas: flatObjectMetadata.flatFieldMetadatas.map(
- (flatFieldMetadata) => {
- if (flatFieldMetadata.id === fromFlatFieldMetadata.id) {
- return {
- ...flatFieldMetadata,
- name: toFlatFieldMetadata.name,
- };
- }
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
+ });
+ const optimisticObjectFlatFieldMetadatas = objectFlatFieldMetadatas.map(
+ (flatFieldMetadata) => {
+ if (flatFieldMetadata.id === fromFlatFieldMetadata.id) {
+ return {
+ ...flatFieldMetadata,
+ name: toFlatFieldMetadata.name,
+ };
+ }
- return flatFieldMetadata;
- },
- ),
- };
+ return flatFieldMetadata;
+ },
+ );
return relatedFlatIndexMetadata.map((flatIndex) => {
const newIndex = generateFlatIndexMetadataWithNameOrThrow({
- flatObjectMetadata: optimisticFlatObjectMetadata,
flatIndex,
+ flatObjectMetadata,
+ objectFlatFieldMetadatas: optimisticObjectFlatFieldMetadatas,
});
return newIndex;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts
index b92fcbe34ea..05fe43643d3 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts
@@ -24,6 +24,7 @@ export const throwOnFieldInputTranspilationsError: ThrowOnFieldInputTranspilatio
throw new WorkspaceMigrationBuilderExceptionV2(
{
report: {
+ fieldMetadata: [],
index: [],
view: [],
viewField: [],
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts
index fb3f9883ffe..57a84c0c20f 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts
@@ -16,7 +16,6 @@ import {
type FieldMetadataDefaultOption,
} from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
-import { type ValidateOneFieldMetadataArgs } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { runFlatFieldMetadataValidators } from 'src/engine/metadata-modules/flat-field-metadata/utils/run-flat-field-metadata-validators.util';
@@ -25,6 +24,7 @@ import {
beneathDatabaseIdentifierMinimumLength,
exceedsDatabaseIdentifierMaximumLength,
} from 'src/engine/metadata-modules/utils/validate-database-identifier-length.utils';
+import { type ValidateOneFieldMetadataArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
import { isSnakeCaseString } from 'src/utils/is-snake-case-string';
const validateMetadataOptionId = (sanitizedId?: string) => {
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts
index 95be2f2bf0f..f50828ab5ba 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts
@@ -2,20 +2,23 @@ import { t } from '@lingui/core/macro';
import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util';
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
const getReservedCompositeFieldNames = (
- flatObjectMetadata: FlatObjectMetadata,
+ objectFlatFieldMetadatas: FlatFieldMetadata[],
): string[] => {
- return flatObjectMetadata.flatFieldMetadatas.flatMap((flatFieldMetadata) => {
+ return objectFlatFieldMetadatas.flatMap((flatFieldMetadata) => {
if (isCompositeFieldMetadataType(flatFieldMetadata.type)) {
const base = flatFieldMetadata.name;
const compositeType = compositeTypeDefinitions.get(
@@ -35,33 +38,63 @@ const getReservedCompositeFieldNames = (
});
};
-// Should implement Morph relation nameObjectId col availability
export const validateFlatFieldMetadataNameAvailability = ({
flatFieldMetadata,
+ flatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
flatObjectMetadata,
}: {
flatFieldMetadata: FlatFieldMetadata;
flatObjectMetadata: FlatObjectMetadata;
+ flatFieldMetadataMaps: FlatEntityMaps;
+ remainingFlatEntityMapsToValidate?: FlatEntityMaps;
}): FlatFieldMetadataValidationError[] => {
const errors: FlatFieldMetadataValidationError[] = [];
- const reservedCompositeFieldsNames =
- getReservedCompositeFieldNames(flatObjectMetadata);
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata,
+ });
+ const reservedCompositeFieldsNames = getReservedCompositeFieldNames(
+ objectFlatFieldMetadatas,
+ );
const flatFieldMetadataName = flatFieldMetadata.name;
if (
!isFlatFieldMetadataOfType(
+ // CHALLENGE Could remove the is morph relation assertion
flatFieldMetadata,
FieldMetadataType.MORPH_RELATION,
) &&
- flatObjectMetadata.flatFieldMetadatas.some((existingFlatFieldMetadata) => {
+ objectFlatFieldMetadatas.some((existingFlatFieldMetadata) => {
const firstDegreeCollision =
existingFlatFieldMetadata.name === flatFieldMetadataName;
- const relationJoinColumnCollision =
- isMorphOrRelationFlatFieldMetadata(existingFlatFieldMetadata) &&
- existingFlatFieldMetadata.flatRelationTargetFieldMetadata.settings
- .joinColumnName === flatFieldMetadataName;
- return firstDegreeCollision || relationJoinColumnCollision;
+ if (firstDegreeCollision) {
+ return true;
+ }
+
+ if (!isMorphOrRelationFlatFieldMetadata(existingFlatFieldMetadata)) {
+ return false;
+ }
+
+ const targetFlatFieldMetadata =
+ remainingFlatEntityMapsToValidate?.byId[
+ existingFlatFieldMetadata.relationTargetFieldMetadataId
+ ] ??
+ findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityId: existingFlatFieldMetadata.relationTargetFieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
+ });
+
+ if (!isMorphOrRelationFlatFieldMetadata(targetFlatFieldMetadata)) {
+ return false;
+ }
+
+ return (
+ targetFlatFieldMetadata.settings.joinColumnName ===
+ flatFieldMetadataName
+ );
})
) {
errors.push({
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts
index a5e50c184df..9f346a3b5f7 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts
@@ -3,13 +3,14 @@ import { isDefined, isValidUuid } from 'twenty-shared/utils';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
-import { type ValidateOneFieldMetadataArgs } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type';
+import { type ValidateOneFieldMetadataArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
export const validateMorphOrRelationFlatFieldMetadata = async ({
- existingFlatObjectMetadataMaps,
+ dependencyOptimisticFlatEntityMaps: { flatObjectMetadataMaps },
flatFieldMetadataToValidate,
- otherFlatObjectMetadataMapsToValidate,
+ optimisticFlatFieldMetadataMaps,
+ remainingFlatEntityMapsToValidate,
}: ValidateOneFieldMetadataArgs): Promise<
FlatFieldMetadataValidationError[]
> => {
@@ -37,23 +38,19 @@ export const validateMorphOrRelationFlatFieldMetadata = async ({
const errors: FlatFieldMetadataValidationError[] = [];
const targetRelationFlatObjectMetadata =
- otherFlatObjectMetadataMapsToValidate?.byId[
- relationTargetObjectMetadataId
- ] ?? existingFlatObjectMetadataMaps.byId[relationTargetObjectMetadataId];
+ flatObjectMetadataMaps?.byId[relationTargetObjectMetadataId];
if (!isDefined(targetRelationFlatObjectMetadata)) {
errors.push({
code: FieldMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
- message: isDefined(otherFlatObjectMetadataMapsToValidate)
- ? 'Relation target object metadata not found in both existing and about to be created object metadatas'
- : 'Relation target object metadata not found',
+ message: 'Relation target object metadata not found',
userFriendlyMessage: t`Object targeted by the relation not found`,
- value: relationTargetObjectMetadataId,
});
}
const targetRelationFlatFieldMetadata =
- targetRelationFlatObjectMetadata?.fieldsById[relationTargetFieldMetadataId];
+ remainingFlatEntityMapsToValidate?.byId[relationTargetFieldMetadataId] ??
+ optimisticFlatFieldMetadataMaps.byId[relationTargetFieldMetadataId];
if (
isDefined(targetRelationFlatObjectMetadata) &&
@@ -61,11 +58,10 @@ export const validateMorphOrRelationFlatFieldMetadata = async ({
) {
errors.push({
code: FieldMetadataExceptionCode.FIELD_METADATA_NOT_FOUND,
- message: isDefined(otherFlatObjectMetadataMapsToValidate)
+ message: isDefined(remainingFlatEntityMapsToValidate)
? 'Relation field target metadata not found in both existing and about to be created field metadatas'
: 'Relation field target metadata not found',
userFriendlyMessage: t`Relation field target metadata not found`,
- value: relationTargetFieldMetadataId,
});
}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts
index 42a5ae72ed2..d8df9a08dff 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-creation-payload.util.ts
@@ -2,6 +2,7 @@ import { t } from '@lingui/core/macro';
import { isDefined } from 'class-validator';
import { type RelationCreationPayload } from 'twenty-shared/types';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import {
type FailedFieldInputTranspilation,
@@ -9,7 +10,6 @@ import {
type SuccessfulFieldInputTranspilation,
} from 'src/engine/metadata-modules/flat-field-metadata/types/field-input-transpilation-result.type';
import { validateRelationCreationPayload } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type RelationCreationPayloadAndObjectMetadata = {
@@ -19,7 +19,7 @@ type RelationCreationPayloadAndObjectMetadata = {
type ValidateMorphRelationCreationPayloadUtilArgs = {
morphRelationCreationPayload: RelationCreationPayload[];
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
+ existingFlatObjectMetadataMaps: FlatEntityMaps;
objectMetadataId: string;
};
export const validateMorphRelationCreationPayload = async ({
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util.ts
index 17361f93568..164bd3fba75 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-relation-creation-payload.util.ts
@@ -5,19 +5,18 @@ import {
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties,
} from 'twenty-shared/utils';
+import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import {
FieldMetadataException,
FieldMetadataExceptionCode,
} from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { validateRelationCreationPayloadOrThrow } from 'src/engine/metadata-modules/field-metadata/utils/validate-relation-creation-payload-or-throw.util';
import { type FieldInputTranspilationResult } from 'src/engine/metadata-modules/flat-field-metadata/types/field-input-transpilation-result.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
type ValidateRelationCreationPayloadUtilArgs = {
relationCreationPayload: RelationCreationPayload;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
+ existingFlatObjectMetadataMaps: FlatEntityMaps;
};
export const validateRelationCreationPayload = async ({
existingFlatObjectMetadataMaps,
@@ -52,12 +51,12 @@ export const validateRelationCreationPayload = async ({
}
}
- const targetFlatObjectMetadataWithFlatFieldMaps =
+ const targetFlatObjectMetadata =
existingFlatObjectMetadataMaps.byId[
relationCreationPayload.targetObjectMetadataId
];
- if (!isDefined(targetFlatObjectMetadataWithFlatFieldMaps)) {
+ if (!isDefined(targetFlatObjectMetadata)) {
return {
status: 'fail',
error: {
@@ -73,10 +72,7 @@ export const validateRelationCreationPayload = async ({
status: 'success',
result: {
relationCreationPayload,
- targetFlatObjectMetadata:
- fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata(
- targetFlatObjectMetadataWithFlatFieldMaps,
- ),
+ targetFlatObjectMetadata,
},
};
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test.ts
deleted file mode 100644
index 6dab9f58d13..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-import { FieldMetadataType } from 'twenty-shared/types';
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-
-type ExpectFlatFieldMetadataToBeInFlatObjectMetadataMapsArgs = {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
- flatFieldMetadata: FlatFieldMetadata;
-};
-export const expectFlatFieldMetadataToBeInFlatObjectMetadataMaps = ({
- flatFieldMetadata,
- flatObjectMetadataMaps,
-}: ExpectFlatFieldMetadataToBeInFlatObjectMetadataMapsArgs) => {
- const { objectMetadataId, id: flatFieldMetadataId } = flatFieldMetadata;
- const matchingFlatObjectMetadata =
- flatObjectMetadataMaps.byId[objectMetadataId];
-
- jestExpectToBeDefined(matchingFlatObjectMetadata);
-
- if (
- isFlatFieldMetadataOfType(flatFieldMetadata, FieldMetadataType.RELATION) &&
- isDefined(flatFieldMetadata.settings.joinColumnName)
- ) {
- expect(
- matchingFlatObjectMetadata.fieldIdByJoinColumnName[
- flatFieldMetadata.settings.joinColumnName
- ],
- ).toEqual(flatFieldMetadataId);
- }
-
- expect(
- matchingFlatObjectMetadata.fieldsById[flatFieldMetadataId],
- ).toBeDefined();
- expect(matchingFlatObjectMetadata.fieldsById[flatFieldMetadataId]).toEqual(
- flatFieldMetadata,
- );
- expect(matchingFlatObjectMetadata.flatFieldMetadatas).toContain(
- flatFieldMetadata,
- );
- expect(
- matchingFlatObjectMetadata.fieldIdByName[flatFieldMetadata.name],
- ).toEqual(flatFieldMetadataId);
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util.test.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util.test.ts
deleted file mode 100644
index dd5782acf6e..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util.test.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-
-import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-type ExpectFlatObjectMetadataToBeInFlatObjectMetadataMapsArgs = {
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
- flatObjectMetadata: FlatObjectMetadata;
-};
-export const expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps = ({
- flatObjectMetadataMaps,
- flatObjectMetadata,
-}: ExpectFlatObjectMetadataToBeInFlatObjectMetadataMapsArgs) => {
- const { id: objectMetadataId } = flatObjectMetadata;
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[objectMetadataId];
-
- expect(
- flatObjectMetadataMaps.idByNameSingular[flatObjectMetadata.nameSingular],
- ).toEqual(objectMetadataId);
- jestExpectToBeDefined(flatObjectMetadataWithFlatFieldMaps);
-
- const finalObjectMetadataWithFlatFieldMaps =
- flatObjectMetadata.flatFieldMetadatas.reduce(
- (flatObjectMetadataWithFlatFieldMaps, flatFieldMetadata) => {
- expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- });
-
- return deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow({
- fieldMetadataId: flatFieldMetadata.id,
- flatObjectMetadataWithFlatFieldMaps,
- });
- },
- flatObjectMetadataWithFlatFieldMaps,
- );
-
- expect(finalObjectMetadataWithFlatFieldMaps).toEqual({
- ...flatObjectMetadata,
- flatFieldMetadatas: [],
- fieldsById: {},
- fieldIdByJoinColumnName: {},
- fieldIdByName: {},
- });
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant.ts
deleted file mode 100644
index e5a2734fb31..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-
-export const EMPTY_FLAT_OBJECT_METADATA_MAPS = {
- byId: {},
- idByNameSingular: {},
- idByUniversalIdentifier: {},
-} as const satisfies FlatObjectMetadataMaps;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception.ts
deleted file mode 100644
index 6808d287b0c..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import {
- appendCommonExceptionCode,
- CustomException,
-} from 'src/utils/custom-exception';
-
-export class FlatObjectMetadataMapsException extends CustomException<
- keyof typeof FlatObjectMetadataMapsExceptionCode
-> {}
-
-export const FlatObjectMetadataMapsExceptionCode = appendCommonExceptionCode({
- FIELD_METADATA_NOT_FOUND: 'FIELD_METADATA_NOT_FOUND',
- OBJECT_METADATA_NOT_FOUND: 'OBJECT_METADATA_NOT_FOUND',
- FIELD_METADATA_ALREADY_EXISTS: 'FIELD_METADATA_ALREADY_EXISTS',
- OBJECT_METADATA_ALREADY_EXISTS: 'OBJECT_METADATA_ALREADY_EXISTS',
-} as const);
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock.ts
deleted file mode 100644
index d0a358e6341..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { ALL_FLAT_OBJECT_METADATA_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/all-flat-object-metadatas.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-export const FLAT_OBJECT_METADATA_MAPS_MOCKS =
- fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- ...ALL_FLAT_OBJECT_METADATA_MOCKS,
- ]);
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type.ts
deleted file mode 100644
index aae926266ab..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-
-export type FlatObjectMetadataMaps = {
- byId: Partial>;
- idByNameSingular: Partial>;
- idByUniversalIdentifier: Record;
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type.ts
deleted file mode 100644
index 3d70dd558a1..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export type FlatFieldMetadataMaps = {
- fieldsById: Partial>;
- fieldIdByJoinColumnName: Partial>;
- fieldIdByName: Partial>;
-};
-
-export type FlatObjectMetadataWithFlatFieldMaps = FlatObjectMetadata &
- FlatFieldMetadataMaps;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index ec04ae65246..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,5 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata parent object metadata does not exist 1`] = `"addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow field parent object metadata not found"`;
-
-exports[`addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata to add already exist in object 1`] = `"addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMaps added flatFieldMetadata already exists"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index 31f5800e853..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow should throw when object metadata to add already exists 1`] = `"addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow: flat object metadata to add already exists"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index e2e178736d1..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,5 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`deleteFieldFromFlatObjectMetadataMapsOrThrow should throw when field metadata id does not exist in object 1`] = `"deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found"`;
-
-exports[`deleteFieldFromFlatObjectMetadataMapsOrThrow should throw when object metadata id does not exist 1`] = `"deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index 2e873ed37d8..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`deleteObjectFromFlatObjectMetadataMapsOrThrow should throw when object metadata to delete does not exist 1`] = `"deleteObjectFromFlatObjectMetadataMapsOrThrow: object to delete not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index 1ba2a586ad9..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,5 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`getSubFlatObjectMetadataMapsOrThrow should throw when extracting twice the same object 1`] = `"addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow: flat object metadata with fields maps to add already exists"`;
-
-exports[`getSubFlatObjectMetadataMapsOrThrow should throw when object metadata id is not found 1`] = `"getSubFlatObjectMetadataMapsOrThrow object metadata not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts.snap
deleted file mode 100644
index 396b1c60e62..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow should throw when object metadata id is not found 1`] = `"getSubFlatObjectMetadataMapsOfSpecificFieldsOrThrow object metadata not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index 7c23049b66f..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,5 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata parent object does not exist 1`] = `"deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found"`;
-
-exports[`replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow should throw when field metadata to replace does not exist 1`] = `"deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
deleted file mode 100644
index 57574dec4db..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/__snapshots__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts.snap
+++ /dev/null
@@ -1,3 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow should throw when object metadata to replace does not exist 1`] = `"deleteObjectFromFlatObjectMetadataMapsOrThrow: object to delete not found"`;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index 6295f9d2ace..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
-import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import {
- type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
-
-type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgsTestCase = {
- input: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs;
- shouldThrow?: true;
-};
-
-describe('addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title:
- 'should throw when field metadata parent object metadata does not exist',
- context: {
- shouldThrow: true,
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- flatFieldMetadata: getFlatFieldMetadataMock({
- objectMetadataId: 'non-existent',
- type: FieldMetadataType.TEXT,
- universalIdentifier: 'unique-id-1',
- id: 'unique-id-1',
- }),
- },
- },
- },
- {
- title:
- 'should throw when field metadata to add already exist in object',
- context: {
- shouldThrow: true,
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- flatFieldMetadata: PET_FLAT_FIELDS_MOCK.species,
- },
- },
- },
- {
- title: 'should add a new relation field to pet object',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- flatFieldMetadata: getFlatFieldMetadataMock({
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- type: FieldMetadataType.RELATION,
- universalIdentifier: 'field-metadata-id',
- id: 'field-metadata-id',
- settings: {
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'whateverId',
- onDelete: RelationOnDeleteAction.CASCADE,
- },
- relationTargetObjectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- relationTargetFieldMetadataId: 'does-not-matter',
- }),
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatFieldMetadata, flatObjectMetadataMaps },
- shouldThrow = false,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- const updatedFlatObjectMetadataMaps =
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- });
-
- expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
- flatFieldMetadata,
- flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
- });
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps.spec.ts
deleted file mode 100644
index 41902a3b31c..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-field-metadata-in-flat-object-metadata-maps.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { addFlatFieldMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps.util';
-
-type AddFlatFieldMetadataInFlatObjectMetadataMapsArgsTestCase = {
- input: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs;
-};
-
-describe('addFlatFieldMetadataInFlatObjectMetadataMaps', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title:
- 'should return undefined when field metadata parent object metadata does not exist',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- flatFieldMetadata: getFlatFieldMetadataMock({
- objectMetadataId: 'non-existent',
- type: FieldMetadataType.TEXT,
- universalIdentifier: 'unique-id-1',
- id: 'unique-id-1',
- }),
- },
- },
- },
- {
- title:
- 'should return undefined when field metadata to add already exist in object',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- flatFieldMetadata: PET_FLAT_FIELDS_MOCK.species,
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatFieldMetadata, flatObjectMetadataMaps },
- },
- }) => {
- const updatedFlatObjectMetadataMaps =
- addFlatFieldMetadataInFlatObjectMetadataMaps({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- });
-
- expect(updatedFlatObjectMetadataMaps).toBeUndefined();
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index 4f42bf2c635..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type AddFlatObjectMetadataToFlatObjectMetadataMapsTestCase = {
- input: {
- flatObjectMetadata: FlatObjectMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
- };
- shouldThrow?: true;
- expected?: FlatObjectMetadataMaps;
-};
-
-describe('addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata to add already exists',
- context: {
- input: {
- flatObjectMetadata: PET_FLAT_OBJECT_MOCK,
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should add object to flat object metadata maps',
- context: {
- input: {
- flatObjectMetadata: ROCKET_FLAT_OBJECT_MOCK,
- flatObjectMetadataMaps:
- fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ]),
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ROCKET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatObjectMetadata, flatObjectMetadataMaps },
- shouldThrow = false,
- expected,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- jestExpectToBeDefined(expected);
- const updatedFlatObjectMetadataMaps =
- addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps,
- });
-
- expect(updatedFlatObjectMetadataMaps).toStrictEqual(expected);
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index e6b044d8b0d..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-field-from-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { RelationOnDeleteAction } from 'src/engine/metadata-modules/relation-metadata/relation-on-delete-action.type';
-
-type DeleteFieldFromFlatObjectMetadataMapsTestCase = {
- input: {
- flatObjectMetadataMaps: FlatObjectMetadataMaps | undefined;
- fieldMetadataId: string;
- objectMetadataId: string;
- };
- shouldThrow?: true;
- expected?: FlatObjectMetadataMaps;
-};
-
-describe('deleteFieldFromFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata id does not exist',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- fieldMetadataId: 'field-1',
- objectMetadataId: 'non-existent',
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should throw when field metadata id does not exist in object',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- fieldMetadataId: 'non-existent-field',
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should delete species custom relation from pet object',
- context: {
- input: {
- flatObjectMetadataMaps:
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata: getFlatFieldMetadataMock({
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- type: FieldMetadataType.RELATION,
- universalIdentifier: 'field-metadata-id',
- id: 'field-metadata-id',
- settings: {
- relationType: RelationType.MANY_TO_ONE,
- joinColumnName: 'whateverId',
- onDelete: RelationOnDeleteAction.CASCADE,
- },
- relationTargetObjectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- relationTargetFieldMetadataId: 'does-not-matter',
- }),
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- }),
- fieldMetadataId: 'field-metadata-id',
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- },
- expected: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { fieldMetadataId, objectMetadataId, flatObjectMetadataMaps },
- expected,
- shouldThrow = false,
- },
- }) => {
- jestExpectToBeDefined(flatObjectMetadataMaps);
- if (shouldThrow) {
- expect(() =>
- deleteFieldFromFlatObjectMetadataMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataMaps,
- objectMetadataId,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- const result = deleteFieldFromFlatObjectMetadataMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataMaps,
- objectMetadataId,
- });
-
- expect(result).toEqual(expected);
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index 82a5c3b57d2..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/delete-object-from-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- type DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs,
- deleteObjectFromFlatObjectMetadataMapsOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type DeleteObjectFromFlatObjectMetadataMapsTestCase = {
- input: DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs;
- shouldThrow?: true;
- expected?: FlatObjectMetadataMaps;
-};
-
-describe('deleteObjectFromFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata to delete does not exist',
- context: {
- input: {
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- objectMetadataId: 'non-existent',
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should delete object from flat object metadata maps',
- context: {
- input: {
- flatObjectMetadataMaps:
- fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ROCKET_FLAT_OBJECT_MOCK,
- ]),
- objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({ context: { input, expected, shouldThrow = false } }) => {
- if (shouldThrow) {
- expect(() =>
- deleteObjectFromFlatObjectMetadataMapsOrThrow(input),
- ).toThrowErrorMatchingSnapshot();
- } else {
- const updatedFlatObjectMetadataMaps =
- deleteObjectFromFlatObjectMetadataMapsOrThrow(input);
-
- expect(updatedFlatObjectMetadataMaps).toEqual(expected);
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-field-metadata-in-flat-object-metadata-maps.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-field-metadata-in-flat-object-metadata-maps.spec.ts
deleted file mode 100644
index 629bc53da89..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-field-metadata-in-flat-object-metadata-maps.spec.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import {
- type FindFlatFieldMetadataInFlatObjectMetadataMapsArgs,
- findFlatFieldMetadataInFlatObjectMetadataMaps,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-
-type FindFlatFieldMetadataInFlatObjectMetadataMapsTestCase = {
- input: FindFlatFieldMetadataInFlatObjectMetadataMapsArgs;
- expected?: FlatFieldMetadata;
-};
-
-describe('findFlatFieldMetadataInFlatObjectMetadataMaps', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should return undefined when object metadata does not exist',
- context: {
- input: {
- fieldMetadataId: PET_FLAT_FIELDS_MOCK.species.id,
- objectMetadataId: 'non-existent',
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- {
- title: 'should return undefined when field metadata does not exist',
- context: {
- input: {
- fieldMetadataId: 'non-existent',
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- {
- title: 'should find field metadata in flat object metadata maps',
- context: {
- input: {
- fieldMetadataId: PET_FLAT_FIELDS_MOCK.species.id,
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: PET_FLAT_FIELDS_MOCK.species,
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { fieldMetadataId, objectMetadataId, flatObjectMetadataMaps },
- expected,
- },
- }) => {
- const findResult = findFlatFieldMetadataInFlatObjectMetadataMaps({
- fieldMetadataId,
- objectMetadataId,
- flatObjectMetadataMaps,
- });
-
- expect(findResult).toEqual(expected);
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-object-metadata-in-flat-object-metadata-maps.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-object-metadata-in-flat-object-metadata-maps.spec.ts
deleted file mode 100644
index c9c3d443818..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/find-flat-object-metadata-in-flat-object-metadata-maps.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import {
- type FindFlatObjectMetadataInFlatObjectMetadataMapsArgs,
- findFlatObjectMetadataInFlatObjectMetadataMaps,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-type FindFlatObjectMetadataInFlatObjectMetadataMapsTestCase = {
- input: FindFlatObjectMetadataInFlatObjectMetadataMapsArgs;
- expected?: FlatObjectMetadata;
-};
-
-describe('findFlatObjectMetadataInFlatObjectMetadataMaps', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should return undefined when object metadata does not exist',
- context: {
- input: {
- objectMetadataId: 'non-existent',
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- {
- title: 'should find object metadata in flat object metadata maps',
- context: {
- input: {
- objectMetadataId: PET_FLAT_OBJECT_MOCK.id,
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: PET_FLAT_OBJECT_MOCK,
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { objectMetadataId, flatObjectMetadataMaps },
- expected,
- },
- }) => {
- const result = findFlatObjectMetadataInFlatObjectMetadataMaps({
- objectMetadataId,
- flatObjectMetadataMaps,
- });
-
- expect(result?.flatFieldMetadatas.length).toEqual(
- expected?.flatFieldMetadatas.length,
- );
-
- expect(result).toEqual(expected);
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index a73ffef01e4..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-import {
- eachTestingContextFilter,
- type EachTestingContext,
-} from 'twenty-shared/testing';
-
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- getSubFlatObjectMetadataMapsOrThrow,
- type GetSubFlatObjectMetadataMapsOrThrowArgs,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type GetSubObjectMetadataMapsOrThrowTestCase = {
- input: GetSubFlatObjectMetadataMapsOrThrowArgs;
- shouldThrow?: true;
- expected?: FlatObjectMetadataMaps;
-};
-
-describe('getSubFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata id is not found',
- context: {
- input: {
- objectMetadataIds: ['non-existent-id'],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should throw when extracting twice the same object',
- context: {
- input: {
- objectMetadataIds: [
- PET_FLAT_OBJECT_MOCK.id,
- PET_FLAT_OBJECT_MOCK.id,
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should extract single object metadata from maps',
- context: {
- input: {
- objectMetadataIds: [PET_FLAT_OBJECT_MOCK.id],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- {
- title: 'should extract multiple object metadata from maps',
- context: {
- input: {
- objectMetadataIds: [
- PET_FLAT_OBJECT_MOCK.id,
- ROCKET_FLAT_OBJECT_MOCK.id,
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ROCKET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { objectMetadataIds, flatObjectMetadataMaps },
- shouldThrow = false,
- expected,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- getSubFlatObjectMetadataMapsOrThrow({
- objectMetadataIds,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- jestExpectToBeDefined(expected);
- const result = getSubFlatObjectMetadataMapsOrThrow({
- objectMetadataIds,
- flatObjectMetadataMaps,
- });
-
- expect(result).toEqual(expected);
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts
deleted file mode 100644
index 261d83a571d..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.spec.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import { jestExpectToBeDefined } from 'test/utils/expect-to-be-defined.util.test';
-import {
- eachTestingContextFilter,
- type EachTestingContext,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
-import { ROCKET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow,
- type GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type GetSubObjectMetadataMapsOrThrowTestCase = {
- input: GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs;
- shouldThrow?: true;
- expected?: FlatObjectMetadataMaps;
-};
-
-describe('getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata id is not found',
- context: {
- input: {
- flatFieldMetadatas: [
- getFlatFieldMetadataMock({
- objectMetadataId: 'non-existent',
- type: FieldMetadataType.TEXT,
- universalIdentifier: 'unique-identifier-1',
- }),
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should extract single object metadata from maps',
- context: {
- input: {
- flatFieldMetadatas: [PET_FLAT_FIELDS_MOCK.species],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- {
- ...PET_FLAT_OBJECT_MOCK,
- flatFieldMetadatas: [PET_FLAT_FIELDS_MOCK.species],
- },
- ]),
- },
- },
- {
- title: 'should extract object metadata from maps with provided fields',
- context: {
- input: {
- flatFieldMetadatas: [
- PET_FLAT_FIELDS_MOCK.species,
- PET_FLAT_FIELDS_MOCK.name,
- ROCKET_FLAT_FIELDS_MOCK.attachments,
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- expected: fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- {
- ...PET_FLAT_OBJECT_MOCK,
- flatFieldMetadatas: [
- PET_FLAT_FIELDS_MOCK.name,
- PET_FLAT_FIELDS_MOCK.species,
- ],
- },
- {
- ...ROCKET_FLAT_OBJECT_MOCK,
- flatFieldMetadatas: [ROCKET_FLAT_FIELDS_MOCK.attachments],
- },
- ]),
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatFieldMetadatas, flatObjectMetadataMaps },
- shouldThrow = false,
- expected,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow({
- flatFieldMetadatas,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- jestExpectToBeDefined(expected);
- const result =
- getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow({
- flatFieldMetadatas,
- flatObjectMetadataMaps,
- });
-
- expect(result).toEqual(expected);
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.spec.ts
deleted file mode 100644
index 258d88f5c3d..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.spec.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import {
- eachTestingContextFilter,
- type EachTestingContext,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util';
-import { getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.util';
-
-type GetSubFlatObjectMetadataMapsTestCase = {
- input: GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs;
-};
-
-describe('getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'return undefined when object metadata id is not found',
- context: {
- input: {
- flatFieldMetadatas: [
- getFlatFieldMetadataMock({
- objectMetadataId: 'non-existent',
- type: FieldMetadataType.TEXT,
- universalIdentifier: 'unique-identifier-1',
- }),
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatFieldMetadatas, flatObjectMetadataMaps },
- },
- }) => {
- const result = getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas({
- flatFieldMetadatas,
- flatObjectMetadataMaps,
- });
-
- expect(result).toBeUndefined();
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps.spec.ts
deleted file mode 100644
index 3c5b52be40a..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/get-sub-flat-object-metadata-maps.spec.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import {
- eachTestingContextFilter,
- type EachTestingContext,
-} from 'twenty-shared/testing';
-
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import { type GetSubFlatObjectMetadataMapsOrThrowArgs } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
-import { getSubFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-
-type GetSubFlatObjectMetadataMapsTestCase = {
- input: GetSubFlatObjectMetadataMapsOrThrowArgs;
-};
-
-describe('getSubFlatObjectMetadataMaps', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata id is not found',
- context: {
- input: {
- objectMetadataIds: ['non-existent-id'],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- {
- title: 'should throw when extracting twice the same object',
- context: {
- input: {
- objectMetadataIds: [
- PET_FLAT_OBJECT_MOCK.id,
- PET_FLAT_OBJECT_MOCK.id,
- ],
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { objectMetadataIds, flatObjectMetadataMaps },
- },
- }) => {
- const result = getSubFlatObjectMetadataMaps({
- objectMetadataIds,
- flatObjectMetadataMaps,
- });
-
- expect(result).toBeUndefined();
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index e887d31a27b..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-import { FieldMetadataType } from 'twenty-shared/types';
-
-import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock';
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
-import { expectFlatFieldMetadataToBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-field-metadata-to-be-in-flat-object-metadata-maps.util.test';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import {
- type ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
- replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type ReplaceFlatFieldMetadataInFlatObjectMetadataMapsTestCase = {
- input: ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs;
- shouldThrow?: true;
-};
-
-describe('replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when field metadata to replace does not exist',
- context: {
- input: {
- flatFieldMetadata: getFlatFieldMetadataMock({
- objectMetadataId: ROCKET_FLAT_OBJECT_MOCK.id,
- type: FieldMetadataType.TEXT,
- universalIdentifier: 'unique-identifier-1',
- id: 'non-existent',
- }),
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should throw when field metadata parent object does not exist',
- context: {
- input: {
- flatFieldMetadata: getFlatFieldMetadataMock({
- ...PET_FLAT_FIELDS_MOCK.species,
- objectMetadataId: 'non-existent',
- }),
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should replace field metadata in flat object metadata maps',
- context: {
- input: {
- flatFieldMetadata: getFlatFieldMetadataMock({
- ...PET_FLAT_FIELDS_MOCK.species,
- name: 'not-species-anymore',
- }),
- flatObjectMetadataMaps:
- fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ROCKET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatFieldMetadata, flatObjectMetadataMaps },
- shouldThrow = false,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- const updatedFlatObjectMetadataMaps =
- replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- });
-
- expectFlatFieldMetadataToBeInFlatObjectMetadataMaps({
- flatFieldMetadata,
- flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
- });
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
deleted file mode 100644
index f0398c94e1b..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/__tests__/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.spec.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import {
- type EachTestingContext,
- eachTestingContextFilter,
-} from 'twenty-shared/testing';
-
-import { expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/__tests__/utils/expect-flat-object-metadata-to-strictly-be-in-flat-object-metadata-maps.util.test';
-import { FLAT_OBJECT_METADATA_MAPS_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata-maps/mocks/flat-object-metadata-maps.mock';
-import {
- type ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs,
- replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { PET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock';
-import { ROCKET_FLAT_OBJECT_MOCK } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock';
-import { fromFlatObjectMetadatasToFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util';
-
-type ReplaceFlatObjectMetadataInFlatObjectMetadataMapsTestCase = {
- input: ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs;
- shouldThrow?: true;
-};
-
-describe('replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow', () => {
- const testCases: EachTestingContext[] =
- [
- {
- title: 'should throw when object metadata to replace does not exist',
- context: {
- input: {
- flatObjectMetadata: {
- ...PET_FLAT_OBJECT_MOCK,
- id: 'non-existent',
- },
- flatObjectMetadataMaps: FLAT_OBJECT_METADATA_MAPS_MOCKS,
- },
- shouldThrow: true,
- },
- },
- {
- title: 'should replace object metadata in flat object metadata maps',
- context: {
- input: {
- flatObjectMetadata: {
- ...PET_FLAT_OBJECT_MOCK,
- nameSingular: 'not-pet-anymore',
- },
- flatObjectMetadataMaps:
- fromFlatObjectMetadatasToFlatObjectMetadataMaps([
- PET_FLAT_OBJECT_MOCK,
- ROCKET_FLAT_OBJECT_MOCK,
- ]),
- },
- },
- },
- ];
-
- const filteredTestCases = eachTestingContextFilter(testCases);
-
- it.each(filteredTestCases)(
- '$title',
- ({
- context: {
- input: { flatObjectMetadata, flatObjectMetadataMaps },
- shouldThrow = false,
- },
- }) => {
- if (shouldThrow) {
- expect(() =>
- replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps,
- }),
- ).toThrowErrorMatchingSnapshot();
- } else {
- const updatedFlatObjectMetadataMaps =
- replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps,
- });
-
- expectFlatObjectMetadataToStrictlyBeInFlatObjectMetadataMaps({
- flatObjectMetadata,
- flatObjectMetadataMaps: updatedFlatObjectMetadataMaps,
- });
- }
- },
- );
-});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 86fbb988993..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util';
-
-export type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs = {
- flatFieldMetadata: FlatFieldMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow = ({
- flatFieldMetadata,
- flatObjectMetadataMaps,
-}: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[flatFieldMetadata.objectMetadataId];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow field parent object metadata not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- return {
- idByUniversalIdentifier: {
- ...flatObjectMetadataMaps.idByUniversalIdentifier,
- },
- byId: {
- ...flatObjectMetadataMaps.byId,
- [flatFieldMetadata.objectMetadataId]:
- addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataWithFlatFieldMaps,
- }),
- },
- idByNameSingular: { ...flatObjectMetadataMaps.idByNameSingular },
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps.util.ts
deleted file mode 100644
index e822095dc1c..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- type AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-
-export const addFlatFieldMetadataInFlatObjectMetadataMaps = (
- arg: AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs,
-): FlatObjectMetadataMaps | undefined => {
- try {
- return addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow(arg);
- } catch {
- return undefined;
- }
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util.ts
deleted file mode 100644
index 183d9165bc8..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import {
- type FlatFieldMetadataMaps,
- type FlatObjectMetadataWithFlatFieldMaps,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-
-type AddFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrowArgs = {
- flatFieldMetadata: FlatFieldMetadata;
- flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
-};
-export const addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow =
- ({
- flatFieldMetadata,
- flatObjectMetadataWithFlatFieldMaps,
- }: AddFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
- if (
- isDefined(
- flatObjectMetadataWithFlatFieldMaps.fieldsById[flatFieldMetadata.id],
- )
- ) {
- throw new FlatObjectMetadataMapsException(
- 'addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMaps added flatFieldMetadata already exists',
- FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_ALREADY_EXISTS,
- );
- }
-
- let updatedFieldIdByJoinColumnName:
- | FlatFieldMetadataMaps['fieldIdByJoinColumnName']
- | undefined = undefined;
-
- if (isMorphOrRelationFlatFieldMetadata(flatFieldMetadata)) {
- if (isDefined(flatFieldMetadata.settings.joinColumnName)) {
- updatedFieldIdByJoinColumnName = {
- [flatFieldMetadata.settings.joinColumnName]: flatFieldMetadata.id,
- };
- }
- }
-
- return {
- ...flatObjectMetadataWithFlatFieldMaps,
- fieldIdByJoinColumnName: {
- ...flatObjectMetadataWithFlatFieldMaps.fieldIdByJoinColumnName,
- ...updatedFieldIdByJoinColumnName,
- },
- fieldIdByName: {
- ...flatObjectMetadataWithFlatFieldMaps.fieldIdByName,
- [flatFieldMetadata.name]: flatFieldMetadata.id,
- },
- fieldsById: {
- ...flatObjectMetadataWithFlatFieldMaps.fieldsById,
- [flatFieldMetadata.id]: flatFieldMetadata,
- },
- flatFieldMetadatas: [
- ...flatObjectMetadataWithFlatFieldMaps.flatFieldMetadatas,
- flatFieldMetadata,
- ],
- };
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 71796ea5902..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromFlatObjectMetadataToFlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util';
-
-type AddFlatObjectMetadataToFlatObjectMetadataMapsOrThrowArgs = {
- flatObjectMetadata: FlatObjectMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadata,
- flatObjectMetadataMaps,
-}: AddFlatObjectMetadataToFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- if (isDefined(flatObjectMetadataMaps.byId[flatObjectMetadata.id])) {
- throw new FlatObjectMetadataMapsException(
- 'addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow: flat object metadata to add already exists',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_ALREADY_EXISTS,
- );
- }
-
- return {
- idByUniversalIdentifier: {
- ...flatObjectMetadataMaps.idByUniversalIdentifier,
- [flatObjectMetadata.universalIdentifier]: flatObjectMetadata.id,
- },
- byId: {
- ...flatObjectMetadataMaps.byId,
- [flatObjectMetadata.id]:
- fromFlatObjectMetadataToFlatObjectMetadataWithFlatFieldMaps(
- flatObjectMetadata,
- ),
- },
- idByNameSingular: {
- ...flatObjectMetadataMaps.idByNameSingular,
- [flatObjectMetadata.nameSingular]: flatObjectMetadata.id,
- },
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-with-field-maps-to-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-with-field-maps-to-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index b5191c3e7c8..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-with-field-maps-to-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-
-type AddFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrowArgs =
- {
- flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
- };
-export const addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow =
- ({
- flatObjectMetadataWithFlatFieldMaps,
- flatObjectMetadataMaps,
- }: AddFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- if (
- isDefined(
- flatObjectMetadataMaps.byId[flatObjectMetadataWithFlatFieldMaps.id],
- )
- ) {
- throw new FlatObjectMetadataMapsException(
- 'addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow: flat object metadata with fields maps to add already exists',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_ALREADY_EXISTS,
- );
- }
-
- return {
- idByUniversalIdentifier: {
- ...flatObjectMetadataMaps.idByUniversalIdentifier,
- [flatObjectMetadataWithFlatFieldMaps.universalIdentifier]:
- flatObjectMetadataWithFlatFieldMaps.id,
- },
- byId: {
- ...flatObjectMetadataMaps.byId,
- [flatObjectMetadataWithFlatFieldMaps.id]:
- flatObjectMetadataWithFlatFieldMaps,
- },
- idByNameSingular: {
- ...flatObjectMetadataMaps.idByNameSingular,
- [flatObjectMetadataWithFlatFieldMaps.nameSingular]:
- flatObjectMetadataWithFlatFieldMaps.id,
- },
- };
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 678f8c67430..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util';
-
-type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
- fieldMetadataId: string;
- objectMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const deleteFieldFromFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadataMaps,
- fieldMetadataId,
- objectMetadataId,
-}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[objectMetadataId];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'deleteFieldFromFlatObjectMetadataMapsOrThrow: field metadata to delete parent flat object metadata not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- return {
- idByUniversalIdentifier: flatObjectMetadataMaps.idByUniversalIdentifier,
- byId: {
- ...flatObjectMetadataMaps.byId,
- [objectMetadataId]:
- deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataWithFlatFieldMaps,
- }),
- },
- idByNameSingular: flatObjectMetadataMaps.idByNameSingular,
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util.ts
deleted file mode 100644
index 659f5043d94..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { isDefined, removePropertiesFromRecord } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-
-type DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs = {
- fieldMetadataId: string;
- flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps;
-};
-export const deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow = ({
- flatObjectMetadataWithFlatFieldMaps,
- fieldMetadataId: fieldMetadataIdToRemove,
-}: DeleteFieldFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataWithFlatFieldMaps => {
- const flatFieldMetadataToRemove =
- flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataIdToRemove];
-
- if (!isDefined(flatFieldMetadataToRemove)) {
- throw new FlatObjectMetadataMapsException(
- 'deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow: field to delete not found',
- FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_NOT_FOUND,
- );
- }
-
- const {
- fieldIdByName,
- fieldsById,
- flatFieldMetadatas,
- fieldIdByJoinColumnName,
- } = flatObjectMetadataWithFlatFieldMaps;
- const updatedFieldIdByJoinColumnName = Object.entries(
- fieldIdByJoinColumnName,
- ).filter(([_joinColumnName, fieldId]) => fieldId !== fieldMetadataIdToRemove);
-
- return {
- ...flatObjectMetadataWithFlatFieldMaps,
- fieldIdByJoinColumnName: Object.fromEntries(updatedFieldIdByJoinColumnName),
- fieldIdByName: removePropertiesFromRecord(fieldIdByName, [
- flatFieldMetadataToRemove.name,
- ]),
- fieldsById: removePropertiesFromRecord(fieldsById, [
- fieldMetadataIdToRemove,
- ]),
- flatFieldMetadatas: flatFieldMetadatas.filter(
- (flatFieldMetadata) => flatFieldMetadata.id !== fieldMetadataIdToRemove,
- ),
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 92ee02abf70..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { isDefined, removePropertiesFromRecord } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-
-export type DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs = {
- objectMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const deleteObjectFromFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadataMaps,
- objectMetadataId,
-}: DeleteObjectFromFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- if (!isDefined(flatObjectMetadataMaps.byId[objectMetadataId])) {
- throw new FlatObjectMetadataMapsException(
- 'deleteObjectFromFlatObjectMetadataMapsOrThrow: object to delete not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- const updatedIdByNameSingularEntries = Object.entries(
- flatObjectMetadataMaps.idByNameSingular,
- ).filter(([_nameSingular, id]) => id !== objectMetadataId);
-
- const updatedIdByUniversalIdentifierEntries = Object.entries(
- flatObjectMetadataMaps.idByUniversalIdentifier,
- ).filter(([_universalIdentifier, id]) => id !== objectMetadataId);
-
- return {
- idByUniversalIdentifier: Object.fromEntries(
- updatedIdByUniversalIdentifierEntries,
- ),
- byId: removePropertiesFromRecord(flatObjectMetadataMaps.byId, [
- objectMetadataId,
- ]),
- idByNameSingular: Object.fromEntries(updatedIdByNameSingularEntries),
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 6d08308fd03..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import {
- findFlatFieldMetadataInFlatObjectMetadataMaps,
- type FindFlatFieldMetadataInFlatObjectMetadataMapsArgs,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util';
-
-export const findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadataMaps,
- fieldMetadataId,
- objectMetadataId,
-}: FindFlatFieldMetadataInFlatObjectMetadataMapsArgs): FlatFieldMetadata => {
- const flatFieldMetadata = findFlatFieldMetadataInFlatObjectMetadataMaps({
- flatObjectMetadataMaps,
- fieldMetadataId,
- objectMetadataId,
- });
-
- if (!isDefined(flatFieldMetadata)) {
- throw new FlatObjectMetadataMapsException(
- 'flat field metadata not found in flat object metadata maps',
- FlatObjectMetadataMapsExceptionCode.FIELD_METADATA_NOT_FOUND,
- );
- }
-
- return flatFieldMetadata;
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util.ts
deleted file mode 100644
index fad5371fc11..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-with-field-id-only.util.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-
-export type FindFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldIdArgs = {
- fieldMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-// TODO add tests
-export const findFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldId = ({
- flatObjectMetadataMaps,
- fieldMetadataId,
-}: FindFlatFieldMetadataInFlatObjectMetadataMapsWithOnlyFieldIdArgs):
- | FlatFieldMetadata
- | undefined => {
- const flatObjectMetadataWithFlatFieldMapsArray = Object.values(
- flatObjectMetadataMaps.byId,
- ).filter(isDefined);
-
- const matchingFlatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataWithFlatFieldMapsArray.find(
- (flatObjectMetadataWithFlatFieldMaps) =>
- isDefined(
- flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataId],
- ),
- );
-
- return matchingFlatObjectMetadataWithFlatFieldMaps?.fieldsById[
- fieldMetadataId
- ];
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util.ts
deleted file mode 100644
index a1c23364dd0..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-
-export type FindFlatFieldMetadataInFlatObjectMetadataMapsArgs = {
- objectMetadataId: string;
- fieldMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const findFlatFieldMetadataInFlatObjectMetadataMaps = ({
- flatObjectMetadataMaps,
- fieldMetadataId,
- objectMetadataId,
-}: FindFlatFieldMetadataInFlatObjectMetadataMapsArgs):
- | FlatFieldMetadata
- | undefined => {
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[objectMetadataId];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- return undefined;
- }
-
- const flatFieldMetadata =
- flatObjectMetadataWithFlatFieldMaps.fieldsById[fieldMetadataId];
-
- if (!isDefined(flatFieldMetadata)) {
- return undefined;
- }
-
- return flatFieldMetadata;
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index c299a5715b0..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatObjectMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export type FindFlatObjectMetadataInFlatObjectMetadataMapsArgs = {
- objectMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const findFlatObjectMetadataInFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadataMaps,
- objectMetadataId,
-}: FindFlatObjectMetadataInFlatObjectMetadataMapsArgs): FlatObjectMetadata => {
- const flatObjectMetadata = findFlatObjectMetadataInFlatObjectMetadataMaps({
- flatObjectMetadataMaps,
- objectMetadataId,
- });
-
- if (!isDefined(flatObjectMetadata)) {
- throw new FlatObjectMetadataMapsException(
- 'flat object metadata not found in flat object metadata maps',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- return flatObjectMetadata;
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util.ts
deleted file mode 100644
index 09756cc4742..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
-
-export type FindFlatObjectMetadataInFlatObjectMetadataMapsArgs = {
- objectMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const findFlatObjectMetadataInFlatObjectMetadataMaps = ({
- flatObjectMetadataMaps,
- objectMetadataId,
-}: FindFlatObjectMetadataInFlatObjectMetadataMapsArgs):
- | FlatObjectMetadata
- | undefined => {
- const flatObjectMetadataWithFlatFieldMaps =
- findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMaps({
- flatObjectMetadataMaps,
- objectMetadataId,
- });
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- return undefined;
- }
-
- return fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata(
- flatObjectMetadataWithFlatFieldMaps,
- );
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 31f6294f79b..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-import {
- type FindFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMapsArgs,
- findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMaps,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps.util';
-
-export const findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMapsOrThrow =
- ({
- flatObjectMetadataMaps,
- objectMetadataId,
- }: FindFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMapsArgs): FlatObjectMetadataWithFlatFieldMaps => {
- const flatObjectMetadataWithFlatFieldMaps =
- findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMaps({
- flatObjectMetadataMaps,
- objectMetadataId,
- });
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'flat object metadata with flat field maps not found in flat object metadata maps',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- return flatObjectMetadataWithFlatFieldMaps;
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps.util.ts
deleted file mode 100644
index b69e61371f2..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-with-flat-field-maps-in-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-
-export type FindFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMapsArgs =
- {
- objectMetadataId: string;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
- };
-
-export const findFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMaps =
- ({
- flatObjectMetadataMaps,
- objectMetadataId,
- }: FindFlatObjectMetadataWithFlatFieldMapsInFlatObjectMetadataMapsArgs):
- | FlatObjectMetadataWithFlatFieldMaps
- | undefined => {
- const flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataMaps.byId[objectMetadataId];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- return undefined;
- }
-
- return flatObjectMetadataWithFlatFieldMaps;
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts
deleted file mode 100644
index 6466ee6a1cd..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-flat-field-metadata-to-flat-field-metadata-maps.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
-
-export const fromObjectMetadataMapsToFlatObjectMetadataMaps = (
- objectMetadataMaps: ObjectMetadataMaps,
-): FlatObjectMetadataMaps => {
- const initialAccumulator: FlatObjectMetadataMaps['byId'] = {};
-
- const byId = Object.values(objectMetadataMaps.byId)
- .filter(isDefined)
- .reduce((acc, objectMetadataItemWithFieldMaps) => {
- const { id: objectMetadataId } = objectMetadataItemWithFieldMaps;
-
- return {
- ...acc,
- [objectMetadataId]:
- fromObjectMetadataItemWithFieldMapsToFlatObjectWithFlatFieldMetadataMaps(
- { objectMetadataItemWithFieldMaps, objectMetadataMaps },
- ),
- };
- }, initialAccumulator);
-
- return {
- idByUniversalIdentifier: Object.values(objectMetadataMaps.byId)
- .filter(isDefined)
- .reduce(
- (acc, objectMetadata) => ({
- ...acc,
- [objectMetadata.standardId ?? objectMetadata.id]: objectMetadata.id,
- }),
- {},
- ),
- idByNameSingular: objectMetadataMaps.idByNameSingular,
- byId,
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index 72548b9fe93..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { EMPTY_FLAT_OBJECT_METADATA_MAPS } from 'src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant';
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-with-field-maps-to-flat-object-metadata-maps-or-throw.util';
-
-export type GetSubFlatObjectMetadataMapsOrThrowArgs = {
- objectMetadataIds: string[];
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const getSubFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadataMaps: sourceFlatObjectMetadataMaps,
- objectMetadataIds,
-}: GetSubFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- return objectMetadataIds.reduce(
- (flatObjectMetadataMaps, objectMetadataId) => {
- const flatObjectMetadataWithFlatFieldMaps =
- sourceFlatObjectMetadataMaps.byId[objectMetadataId];
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'getSubFlatObjectMetadataMapsOrThrow object metadata not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- return addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow(
- {
- flatObjectMetadataMaps,
- flatObjectMetadataWithFlatFieldMaps,
- },
- );
- },
- EMPTY_FLAT_OBJECT_METADATA_MAPS,
- );
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util.ts
deleted file mode 100644
index b64ee277288..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { fromArrayToValuesByKeyRecord, isDefined } from 'twenty-shared/utils';
-
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { EMPTY_FLAT_OBJECT_METADATA_MAPS } from 'src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant';
-import {
- FlatObjectMetadataMapsException,
- FlatObjectMetadataMapsExceptionCode,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/flat-object-metadata-maps.exception';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-with-field-maps-to-flat-object-metadata-maps-or-throw.util';
-import { deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-with-flat-field-maps-or-throw.util';
-
-export type GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs = {
- flatFieldMetadatas: Pick[];
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow = ({
- flatObjectMetadataMaps: sourceFlatObjectMetadataMaps,
- flatFieldMetadatas,
-}: GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs): FlatObjectMetadataMaps => {
- const fieldIdPerObjectId = fromArrayToValuesByKeyRecord({
- array: flatFieldMetadatas,
- key: 'objectMetadataId',
- });
-
- return Object.keys(fieldIdPerObjectId).reduce(
- (flatObjectMetadataMaps, objectMetadataId) => {
- let flatObjectMetadataWithFlatFieldMaps = structuredClone(
- sourceFlatObjectMetadataMaps.byId[objectMetadataId],
- );
-
- if (!isDefined(flatObjectMetadataWithFlatFieldMaps)) {
- throw new FlatObjectMetadataMapsException(
- 'getSubFlatObjectMetadataMapsOfSpecificFieldsOrThrow object metadata not found',
- FlatObjectMetadataMapsExceptionCode.OBJECT_METADATA_NOT_FOUND,
- );
- }
-
- const fieldIds =
- fieldIdPerObjectId[objectMetadataId]?.map(({ id }) => id) ?? [];
-
- flatObjectMetadataWithFlatFieldMaps =
- flatObjectMetadataWithFlatFieldMaps.flatFieldMetadatas.reduce(
- (flatObjectMetadataWithFlatFieldMaps, flatFieldMetadata) => {
- if (fieldIds.includes(flatFieldMetadata.id)) {
- return flatObjectMetadataWithFlatFieldMaps;
- }
-
- return deleteFieldFromFlatObjectMetadataWithFlatFieldMapsOrThrow({
- fieldMetadataId: flatFieldMetadata.id,
- flatObjectMetadataWithFlatFieldMaps,
- });
- },
- flatObjectMetadataWithFlatFieldMaps,
- );
-
- return addFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadataMapsOrThrow(
- {
- flatObjectMetadataWithFlatFieldMaps,
- flatObjectMetadataMaps,
- },
- );
- },
- EMPTY_FLAT_OBJECT_METADATA_MAPS,
- );
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.util.ts
deleted file mode 100644
index f3d0ad97f04..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.util.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- type GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs,
- getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util';
-
-export const getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas = (
- args: GetSubFlatObjectMetadataMapsOfSpecificFieldsOrThrowArgs,
-): FlatObjectMetadataMaps | undefined => {
- try {
- return getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow(args);
- } catch {
- return undefined;
- }
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps.util.ts
deleted file mode 100644
index 72dae990812..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import {
- getSubFlatObjectMetadataMapsOrThrow,
- type GetSubFlatObjectMetadataMapsOrThrowArgs,
-} from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
-
-export const getSubFlatObjectMetadataMaps = (
- args: GetSubFlatObjectMetadataMapsOrThrowArgs,
-): FlatObjectMetadataMaps | undefined => {
- try {
- return getSubFlatObjectMetadataMapsOrThrow(args);
- } catch {
- return undefined;
- }
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index f4b600d9636..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
-
-export type ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs = {
- flatFieldMetadata: FlatFieldMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow = ({
- flatFieldMetadata,
- flatObjectMetadataMaps,
-}: ReplaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgs): FlatObjectMetadataMaps => {
- const flatObjectMetadataMapsWithoutFlatFieldMetadataToReplace =
- deleteFieldFromFlatObjectMetadataMapsOrThrow({
- fieldMetadataId: flatFieldMetadata.id,
- flatObjectMetadataMaps,
- objectMetadataId: flatFieldMetadata.objectMetadataId,
- });
-
- return addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps:
- flatObjectMetadataMapsWithoutFlatFieldMetadataToReplace,
- });
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts
deleted file mode 100644
index c21000dc813..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
-import { deleteObjectFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export type ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs = {
- flatObjectMetadata: FlatObjectMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
-export const replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow = ({
- flatObjectMetadata,
- flatObjectMetadataMaps,
-}: ReplaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrowArgs) => {
- const flatObjectMetadataMapsWithoutFlatObjectMetadataToReplace =
- deleteObjectFromFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps,
- objectMetadataId: flatObjectMetadata.id,
- });
-
- return addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps:
- flatObjectMetadataMapsWithoutFlatObjectMetadataToReplace,
- });
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/attachment-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/attachment-flat-object.mock.ts
index db96f13d788..51015a6ca8c 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/attachment-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/attachment-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { ATTACHMENT_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/attachment-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const ATTACHMENT_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const ATTACHMENT_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-bd3d-4c60-8dca-571c71d4447a',
- flatFieldMetadatas: Object.values(ATTACHMENT_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock.ts
index fd747e6a5ab..e89b3587051 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/company-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { COMPANY_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/company-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const COMPANY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const COMPANY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-b374-4779-a561-80086cb2e17f',
- flatFieldMetadatas: Object.values(COMPANY_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-flat-object.mock.ts
index 1f26dc1639d..ff137ec5f89 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { FAVORITE_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const FAVORITE_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const FAVORITE_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-ab56-4e05-92a3-e2414a499860',
- flatFieldMetadatas: Object.values(FAVORITE_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-folder-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-folder-flat-object.mock.ts
index 50377b710c2..242aa9200bd 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-folder-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/favorite-folder-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { FAVORITE_FOLDER_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/favorite-folder-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const FAVORITE_FOLDER_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const FAVORITE_FOLDER_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-7cf8-401f-8211-a9587d27fd2d',
- flatFieldMetadatas: Object.values(FAVORITE_FOLDER_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/flat-object-metadata-maps.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/flat-object-metadata-maps.mock.ts
new file mode 100644
index 00000000000..29c9f547cbe
--- /dev/null
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/flat-object-metadata-maps.mock.ts
@@ -0,0 +1,14 @@
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
+import { ALL_FLAT_OBJECT_METADATA_MOCKS } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/all-flat-object-metadatas.mock';
+
+export const FLAT_OBJECT_METADATA_MAPS_MOCKS = [
+ ...ALL_FLAT_OBJECT_METADATA_MOCKS,
+].reduce(
+ (flatObjectMaps, flatObjectMetadata) =>
+ addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: flatObjectMetadata,
+ flatEntityMaps: flatObjectMaps,
+ }),
+ EMPTY_FLAT_ENTITY_MAPS,
+);
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock.ts
index fdda2ef5ee8..c4143a82349 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock.ts
@@ -12,8 +12,8 @@ export const getFlatObjectMetadataMock = (
const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date;
return {
- flatFieldMetadatas: [],
-
+ indexMetadataIds: [],
+ fieldMetadataIds: [],
description: 'default flat object metadata description',
icon: 'icon',
id: faker.string.uuid(),
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-flat-object.mock.ts
index f030fdf8090..bd7a90b88fc 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { NOTE_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/note-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const NOTE_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const NOTE_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-0b00-45cd-b6f6-6cd806fc6804',
-
- flatFieldMetadatas: Object.values(NOTE_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-target-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-target-flat-object.mock.ts
index e9640d1d416..f1a3c35ae1f 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-target-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/note-target-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { NOTETARGET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/notetarget-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const NOTE_TARGET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const NOTE_TARGET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-fff0-4b44-be82-bda313884400',
-
- flatFieldMetadatas: Object.values(NOTETARGET_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/opportunity-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/opportunity-flat-object.mock.ts
index 9aa464a7f24..b21fe205376 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/opportunity-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/opportunity-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { OPPORTUNITY_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/opportunity-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const OPPORTUNITY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const OPPORTUNITY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-9549-49dd-b2b2-883999db8938',
- flatFieldMetadatas: Object.values(OPPORTUNITY_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/person-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/person-flat-object.mock.ts
index 8b388b99b94..7cadd3740f3 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/person-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/person-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { PERSON_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/person-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const PERSON_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const PERSON_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-e674-48e5-a542-72570eee7213',
-
- flatFieldMetadatas: Object.values(PERSON_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock.ts
index 79b7afcd97e..b68e3940913 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/pet-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { PET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/pet-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const PET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const PET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
-
- flatFieldMetadatas: Object.values(PET_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock.ts
index 9b8fa631d1f..aab4b634334 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/rocket-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { ROCKET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/rocket-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const ROCKET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const ROCKET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: 'd78ec657-74a4-4652-a350-1f44ff62970a',
-
- flatFieldMetadatas: Object.values(ROCKET_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-flat-object.mock.ts
index cf0feba12d1..29a44a8bb91 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { TASK_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/task-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const TASK_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const TASK_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-1ba1-48ba-bc83-ef7e5990ed10',
-
- flatFieldMetadatas: Object.values(TASK_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-target-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-target-flat-object.mock.ts
index 353fc6ab1f5..02c3c631e09 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-target-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/task-target-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { TASKTARGET_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/tasktarget-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const TASK_TARGET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,6 +23,4 @@ export const TASK_TARGET_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-5a9a-44e8-95df-771cd06d0fb1',
-
- flatFieldMetadatas: Object.values(TASKTARGET_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/timeline-activity-flat-object.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/timeline-activity-flat-object.mock.ts
index ccfc6b5a428..6e85a0c0cb8 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/timeline-activity-flat-object.mock.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/__mocks__/timeline-activity-flat-object.mock.ts
@@ -1,4 +1,3 @@
-import { TIMELINEACTIVITY_FLAT_FIELDS_MOCK } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/timelineactivity-flat-fields.mock';
import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock';
export const TIMELINE_ACTIVITY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
@@ -24,5 +23,4 @@ export const TIMELINE_ACTIVITY_FLAT_OBJECT_MOCK = getFlatObjectMetadataMock({
isLabelSyncedWithName: false,
workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419',
universalIdentifier: '20202020-6736-4337-b5c4-8b39fae325a5',
- flatFieldMetadatas: Object.values(TIMELINEACTIVITY_FLAT_FIELDS_MOCK),
});
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/flat-object-metadata-validator.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/flat-object-metadata-validator.service.ts
deleted file mode 100644
index d84bd1ee07c..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/flat-object-metadata-validator.service.ts
+++ /dev/null
@@ -1,358 +0,0 @@
-import { Injectable } from '@nestjs/common';
-
-import { t } from '@lingui/core/macro';
-import {
- isDefined,
- isLabelIdentifierFieldMetadataTypes,
-} from 'twenty-shared/utils';
-
-import { FlatFieldMetadataValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
-import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
-import { findFlatObjectMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
-import { FlatObjectMetadataValidationError } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata-validation-error.type';
-import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { areFlatObjectMetadataNamesSyncedWithLabels } from 'src/engine/metadata-modules/flat-object-metadata/utils/are-flat-object-metadata-names-synced-with-labels.util';
-import { computeMorphOrRelationTargetFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/compute-morph-or-relation-target-flat-object-metadata-maps.util';
-import { validateFlatObjectMetadataIdentifiers } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util';
-import { validateFlatObjectMetadataLabel } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-label.util';
-import { validateFlatObjectMetadataNames } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name.util';
-import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
-import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
-import { doesOtherObjectWithSameNameExists } from 'src/engine/metadata-modules/utils/validate-no-other-object-with-same-name-exists-or-throw.util';
-import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
-import { WorkspaceMigrationV2BuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-migration-builder-v2.service';
-
-@Injectable()
-export class FlatObjectMetadataValidatorService {
- constructor(
- private readonly flatFieldMetadataValidatorService: FlatFieldMetadataValidatorService,
- ) {}
-
- public validateFlatObjectMetadataUpdate({
- existingFlatObjectMetadataMaps,
- updatedFlatObjectMetadata,
- }: {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- updatedFlatObjectMetadata: FlatObjectMetadata;
- }): FailedFlatEntityValidation {
- const validationResult: FailedFlatEntityValidation = {
- type: 'update_object',
- errors: [],
- flatEntityMinimalInformation: {
- id: updatedFlatObjectMetadata.id,
- },
- };
-
- const existingFlatObjectMetadata =
- existingFlatObjectMetadataMaps.byId[updatedFlatObjectMetadata.id];
-
- if (!isDefined(existingFlatObjectMetadata)) {
- validationResult.errors.push({
- code: ObjectMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
- message: t`Object to update not found`,
- userFriendlyMessage: t`Object to update not found`,
- });
-
- return validationResult;
- }
- validationResult.flatEntityMinimalInformation = {
- id: existingFlatObjectMetadata.id,
- namePlural: existingFlatObjectMetadata.namePlural,
- nameSingular: existingFlatObjectMetadata.nameSingular,
- };
-
- validationResult.errors.push(
- ...this.validateFlatObjectMetadataNameAndLabels({
- existingFlatObjectMetadataMaps,
- flatObjectMetadataToValidate: updatedFlatObjectMetadata,
- }),
- );
-
- validationResult.errors.push(
- ...validateFlatObjectMetadataIdentifiers(existingFlatObjectMetadata),
- );
-
- validationResult.errors.push(
- ...this.validateFlatObjectMetadataLabelIdentifierFieldMetadataId({
- flatObjectMetadata: updatedFlatObjectMetadata,
- }),
- );
-
- return validationResult;
- }
-
- public validateFlatObjectMetadataDeletion({
- existingFlatObjectMetadataMaps,
- objectMetadataToDeleteId,
- buildOptions,
- }: {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- objectMetadataToDeleteId: string;
- buildOptions: WorkspaceMigrationV2BuilderOptions;
- }): FailedFlatEntityValidation {
- const validationResult: FailedFlatEntityValidation = {
- type: 'delete_object',
- errors: [],
- flatEntityMinimalInformation: {
- id: objectMetadataToDeleteId,
- },
- };
-
- const flatObjectMetadataToDelete =
- existingFlatObjectMetadataMaps.byId[objectMetadataToDeleteId];
-
- if (!isDefined(flatObjectMetadataToDelete)) {
- validationResult.errors.push({
- code: ObjectMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
- message: t`Object to delete not found`,
- userFriendlyMessage: t`Object to delete not found`,
- value: objectMetadataToDeleteId,
- });
- } else {
- validationResult.flatEntityMinimalInformation = {
- id: flatObjectMetadataToDelete.id,
- namePlural: flatObjectMetadataToDelete.namePlural,
- nameSingular: flatObjectMetadataToDelete.nameSingular,
- };
-
- if (flatObjectMetadataToDelete.isRemote) {
- validationResult.errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Remote objects are not supported yet`,
- userFriendlyMessage: t`Remote objects are not supported yet`,
- });
- }
-
- if (
- !buildOptions.isSystemBuild &&
- isStandardMetadata(flatObjectMetadataToDelete)
- ) {
- validationResult.errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Standard objects cannot be deleted`,
- userFriendlyMessage: t`Standard objects cannot be deleted`,
- });
- }
-
- if (!buildOptions.isSystemBuild && flatObjectMetadataToDelete.isActive) {
- validationResult.errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Active objects cannot be deleted`,
- userFriendlyMessage: t`Active objects cannot be deleted`,
- });
- }
- }
-
- return validationResult;
- }
-
- public async validateFlatObjectMetadataCreation({
- existingFlatObjectMetadataMaps,
- flatObjectMetadataToValidate,
- otherFlatObjectMetadataMapsToValidate,
- }: {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- flatObjectMetadataToValidate: FlatObjectMetadata;
- otherFlatObjectMetadataMapsToValidate?: FlatObjectMetadataMaps;
- }): Promise<{
- objectValidationResult: FailedFlatEntityValidation;
- fieldValidationResults: FailedFlatEntityValidation[];
- }> {
- const objectValidationResult: FailedFlatEntityValidation<
- FlatObjectMetadata | FlatFieldMetadata
- > = {
- type: 'create_object',
- errors: [],
- flatEntityMinimalInformation: {
- id: flatObjectMetadataToValidate.id,
- namePlural: flatObjectMetadataToValidate.namePlural,
- nameSingular: flatObjectMetadataToValidate.nameSingular,
- },
- };
-
- if (
- isDefined(
- findFlatObjectMetadataInFlatObjectMetadataMaps({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: flatObjectMetadataToValidate.id,
- }),
- )
- ) {
- objectValidationResult.errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Object with same id already exists`,
- userFriendlyMessage: t`Object with same id already exists`,
- });
- }
-
- if (flatObjectMetadataToValidate.isRemote) {
- objectValidationResult.errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Remote objects are not supported yet`,
- userFriendlyMessage: t`Remote objects are not supported yet`,
- });
- }
-
- objectValidationResult.errors.push(
- ...this.validateFlatObjectMetadataLabelIdentifierFieldMetadataId({
- flatObjectMetadata: flatObjectMetadataToValidate,
- }),
- );
-
- objectValidationResult.errors.push(
- ...this.validateFlatObjectMetadataNameAndLabels({
- existingFlatObjectMetadataMaps,
- flatObjectMetadataToValidate,
- }),
- );
-
- const fieldValidationResults: FailedFlatEntityValidation[] =
- [];
- let optimisticFlatObjectMetadataMaps =
- addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata: {
- ...flatObjectMetadataToValidate,
- flatFieldMetadatas: [],
- },
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- });
-
- for (const flatFieldMetadataToValidate of flatObjectMetadataToValidate.flatFieldMetadatas) {
- const relationTargetFlatObjectMetadataMaps =
- isMorphOrRelationFlatFieldMetadata(flatFieldMetadataToValidate) &&
- isDefined(otherFlatObjectMetadataMapsToValidate)
- ? computeMorphOrRelationTargetFlatObjectMetadataMaps({
- flatFieldMetadata: flatFieldMetadataToValidate,
- flatObjectMetadataMaps: otherFlatObjectMetadataMapsToValidate,
- })
- : undefined;
- const flatFieldValidatorErrors =
- await this.flatFieldMetadataValidatorService.validateFlatFieldMetadataCreation(
- {
- existingFlatObjectMetadataMaps: optimisticFlatObjectMetadataMaps,
- flatFieldMetadataToValidate,
- workspaceId: flatObjectMetadataToValidate.workspaceId,
- otherFlatObjectMetadataMapsToValidate:
- relationTargetFlatObjectMetadataMaps,
- },
- );
-
- if (flatFieldValidatorErrors.errors.length > 0) {
- fieldValidationResults.push(flatFieldValidatorErrors);
- continue;
- }
-
- optimisticFlatObjectMetadataMaps =
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata: flatFieldMetadataToValidate,
- flatObjectMetadataMaps: optimisticFlatObjectMetadataMaps,
- });
- }
-
- return {
- fieldValidationResults,
- objectValidationResult,
- };
- }
-
- private validateFlatObjectMetadataNameAndLabels({
- existingFlatObjectMetadataMaps,
- flatObjectMetadataToValidate,
- }: {
- flatObjectMetadataToValidate: FlatObjectMetadata;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- }): FlatObjectMetadataValidationError[] {
- const errors: FlatObjectMetadataValidationError[] = [];
-
- errors.push(
- ...validateFlatObjectMetadataNames({
- namePlural: flatObjectMetadataToValidate.namePlural,
- nameSingular: flatObjectMetadataToValidate.nameSingular,
- }),
- );
-
- errors.push(
- ...validateFlatObjectMetadataLabel({
- labelPlural: flatObjectMetadataToValidate.labelPlural,
- labelSingular: flatObjectMetadataToValidate.labelSingular,
- }),
- );
-
- if (
- flatObjectMetadataToValidate.isLabelSyncedWithName &&
- !areFlatObjectMetadataNamesSyncedWithLabels(flatObjectMetadataToValidate)
- ) {
- errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Names are not synced with labels`,
- userFriendlyMessage: t`Names are not synced with labels`,
- });
- }
-
- if (
- doesOtherObjectWithSameNameExists({
- objectMetadataNamePlural: flatObjectMetadataToValidate.namePlural,
- objectMetadataNameSingular: flatObjectMetadataToValidate.nameSingular,
- objectMetadataMaps: existingFlatObjectMetadataMaps,
- existingObjectMetadataId: flatObjectMetadataToValidate.id,
- })
- ) {
- errors.push({
- code: ObjectMetadataExceptionCode.OBJECT_ALREADY_EXISTS,
- message: 'Object already exists',
- userFriendlyMessage: t`Object already exists`,
- });
- }
-
- return errors;
- }
-
- private validateFlatObjectMetadataLabelIdentifierFieldMetadataId({
- flatObjectMetadata,
- }: {
- flatObjectMetadata: FlatObjectMetadata;
- }) {
- const errors: FlatObjectMetadataValidationError[] = [];
-
- if (!isDefined(flatObjectMetadata.labelIdentifierFieldMetadataId)) {
- errors.push({
- code: ObjectMetadataExceptionCode.MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD,
- message: t`Label identifier field metadata is required`,
- userFriendlyMessage: t`Label identifier field metadata is required`,
- });
- } else {
- const relatedFlatFieldMetadata =
- flatObjectMetadata.flatFieldMetadatas.find(
- (flatFieldMetadata) =>
- flatFieldMetadata.id ===
- flatObjectMetadata.labelIdentifierFieldMetadataId,
- );
-
- if (!relatedFlatFieldMetadata) {
- errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Label identifier field metadata not found in field metadata list`,
- userFriendlyMessage: t`Label identifier field metadata not found in field metadata list`,
- value: flatObjectMetadata.labelIdentifierFieldMetadataId,
- });
- } else {
- if (
- !isLabelIdentifierFieldMetadataTypes(relatedFlatFieldMetadata.type)
- ) {
- errors.push({
- code: ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
- message: t`Label identifier field metadata must be a TEXT or FULL_NAME field type`,
- userFriendlyMessage: t`Label identifier field metadata must be a TEXT or FULL_NAME field type`,
- value: relatedFlatFieldMetadata.type,
- });
- }
- }
- }
-
- return errors;
- }
-}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts
index 114f768fc67..3251b704691 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts
@@ -1,59 +1,65 @@
import { Injectable } from '@nestjs/common';
+import { InjectRepository } from '@nestjs/typeorm';
+
+import { Repository } from 'typeorm';
import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
import { CacheStorageService } from 'src/engine/core-modules/cache-storage/services/cache-storage.service';
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
-import { FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service';
-import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/services/workspace-metadata-version.service';
-import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service';
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
+import { fromObjectMetadataEntityToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-entity-to-flat-object-metadata.util';
+import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { WorkspaceFlatMapCache } from 'src/engine/workspace-flat-map-cache/decorators/workspace-flat-map-cache.decorator';
import { WorkspaceFlatMapCacheService } from 'src/engine/workspace-flat-map-cache/services/workspace-flat-map-cache.service';
@Injectable()
@WorkspaceFlatMapCache('flatObjectMetadataMaps')
-export class WorkspaceFlatObjectMetadataMapCacheService extends WorkspaceFlatMapCacheService {
+export class WorkspaceFlatObjectMetadataMapCacheService extends WorkspaceFlatMapCacheService<
+ FlatEntityMaps
+> {
constructor(
@InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
cacheStorageService: CacheStorageService,
- private workspaceMetadataCacheService: WorkspaceMetadataCacheService,
- private workspaceMetadataVersionService: WorkspaceMetadataVersionService,
- private readonly workspacePermissionsCacheService: WorkspacePermissionsCacheService,
+
+ @InjectRepository(ObjectMetadataEntity)
+ private readonly objectMetadataRepository: Repository,
) {
super(cacheStorageService);
}
- override async beforeInvalidateCache({
- workspaceId,
- }: {
- workspaceId: string;
- }): Promise {
- // Temporarily invalidating old cache too
- await this.workspaceMetadataVersionService.incrementMetadataVersion(
- workspaceId,
- );
- ///
- }
-
- override async afterInvalidateCache({
- workspaceId,
- }: {
- workspaceId: string;
- }): Promise {
- await this.workspacePermissionsCacheService.recomputeRolesPermissionsCache({
- workspaceId,
- });
- }
-
protected async computeFlatMap({
workspaceId,
}: {
workspaceId: string;
- }): Promise {
- return (
- await this.workspaceMetadataCacheService.getExistingOrRecomputeFlatObjectMetadataMaps(
- { workspaceId },
- )
- ).flatObjectMetadataMaps;
+ }): Promise> {
+ const objectMetadatas = await this.objectMetadataRepository.find({
+ where: {
+ workspaceId,
+ },
+ withDeleted: true,
+ relations: ['fields', 'indexMetadatas'],
+ });
+
+ const flatObjectMetadataMaps = objectMetadatas.reduce<
+ FlatEntityMaps
+ >((flatEntityMaps, object) => {
+ const flatObjectMetadata =
+ fromObjectMetadataEntityToFlatObjectMetadata(object);
+
+ return {
+ byId: {
+ ...flatEntityMaps.byId,
+ [flatObjectMetadata.id]: flatObjectMetadata,
+ },
+ idByUniversalIdentifier: {
+ ...flatEntityMaps.idByUniversalIdentifier,
+ [flatObjectMetadata.universalIdentifier]: flatObjectMetadata.id,
+ },
+ };
+ }, EMPTY_FLAT_ENTITY_MAPS);
+
+ return flatObjectMetadataMaps;
}
}
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type.ts
index 6bd18344488..99674b207be 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type.ts
@@ -1,4 +1,3 @@
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { type ExtractRecordTypeOrmRelationProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-relation-properties.type';
import { type MetadataEntitiesRelationTarget } from 'src/engine/workspace-manager/workspace-migration-v2/types/metadata-entities-relation-targets.type';
@@ -23,11 +22,6 @@ export type FlatObjectMetadata = Omit<
ObjectMetadataRelationProperties | 'dataSourceId'
> & {
universalIdentifier: string;
- flatFieldMetadatas: FlatFieldMetadata[];
+ fieldMetadataIds: string[];
+ indexMetadataIds: string[];
};
-
-// Could be renamed
-export type FlatObjectMetadataWithoutFields = Omit<
- FlatObjectMetadata,
- 'flatFieldMetadatas' | 'flatIndexMetadatas'
->;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compare-two-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compare-two-flat-object-metadata.util.ts
index 868e234f266..8017c37f6e7 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compare-two-flat-object-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compare-two-flat-object-metadata.util.ts
@@ -13,9 +13,9 @@ import { type UpdateObjectAction } from 'src/engine/workspace-manager/workspace-
import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util';
export const compareTwoFlatObjectMetadata = ({
- from,
- to,
-}: FromTo) => {
+ fromFlatObjectMetadata,
+ toFlatObjectMetadata,
+}: FromTo) => {
const transformMetadataForComparisonParameters = {
propertiesToStringify: FLAT_OBJECT_METADATA_JSONB_PROPERTIES,
shouldIgnoreProperty: (
@@ -41,11 +41,11 @@ export const compareTwoFlatObjectMetadata = ({
},
};
const fromCompare = transformMetadataForComparison(
- from,
+ fromFlatObjectMetadata,
transformMetadataForComparisonParameters,
);
const toCompare = transformMetadataForComparison(
- to,
+ toFlatObjectMetadata,
transformMetadataForComparisonParameters,
);
const objectMetadataDifference = diff(fromCompare, omit(toCompare, 'fields'));
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compute-morph-or-relation-target-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compute-morph-or-relation-target-flat-object-metadata-maps.util.ts
deleted file mode 100644
index 26c6d73b004..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/compute-morph-or-relation-target-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { findRelationFlatFieldMetadataTargetFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas.util';
-
-export const computeMorphOrRelationTargetFlatObjectMetadataMaps = ({
- flatFieldMetadata,
- flatObjectMetadataMaps,
-}: {
- flatFieldMetadata: FlatFieldMetadata;
- flatObjectMetadataMaps: FlatObjectMetadataMaps;
-}): FlatObjectMetadataMaps | undefined => {
- const relationTargetFlatFieldMetadata =
- findRelationFlatFieldMetadataTargetFlatFieldMetadata({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- });
-
- if (!isDefined(relationTargetFlatFieldMetadata)) {
- return undefined;
- }
-
- return getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatas({
- flatObjectMetadataMaps,
- flatFieldMetadatas: [relationTargetFlatFieldMetadata],
- });
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/delete-flat-field-metadata-from-flat-object-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/delete-flat-field-metadata-from-flat-object-metadatas.util.ts
deleted file mode 100644
index d8ccf0e179a..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/delete-flat-field-metadata-from-flat-object-metadatas.util.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export const deleteFlatFieldMetadataFromFlatObjectMetadatas = ({
- flatFieldMetadata: flatFieldMetadataToRemove,
- flatObjectMetadatas,
-}: {
- flatObjectMetadatas: FlatObjectMetadata[];
- flatFieldMetadata: FlatFieldMetadata;
-}) => {
- return flatObjectMetadatas.map((flatObjectMetadata) => {
- if (flatObjectMetadata.id !== flatFieldMetadataToRemove.objectMetadataId) {
- return flatObjectMetadata;
- }
-
- const flatFieldMetadatas = flatObjectMetadata.flatFieldMetadatas.filter(
- ({ id: flatFieldMetadataId }) =>
- flatFieldMetadataId !== flatFieldMetadataToRemove.id,
- );
-
- return {
- ...flatObjectMetadata,
- flatFieldMetadatas,
- };
- });
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-cached-field-metadata-entity-to-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-cached-field-metadata-entity-to-flat-field-metadata.util.ts
deleted file mode 100644
index 5b2bfa45dd3..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-cached-field-metadata-entity-to-flat-field-metadata.util.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { FieldMetadataType } from 'twenty-shared/types';
-import { isDefined } from 'twenty-shared/utils';
-
-import { type MorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/morph-or-relation-field-metadata-type.type';
-import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatRelationTargetFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-relation-target-field-metadata.type';
-import { fromObjectMetadataItemWithFieldMapsToFlatObjectMetadataWithoutFields } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata-without-fields.util';
-import { type CachedFieldMetadataEntity } from 'src/engine/metadata-modules/types/cached-field-metadata-entity';
-import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
-import {
- WorkspaceMetadataCacheException,
- WorkspaceMetadataCacheExceptionCode,
-} from 'src/engine/metadata-modules/workspace-metadata-cache/exceptions/workspace-metadata-cache.exception';
-import { isCachedFieldMetadataEntityOfType } from 'src/engine/utils/is-cached-field-metadata-of-type.util';
-
-const fromCachedRelationFieldMetadataEntityToFlatRelationTargetFieldMetadata = (
- cachedFieldMetadataEntity: CachedFieldMetadataEntity,
-): FlatRelationTargetFieldMetadata => {
- return {
- ...cachedFieldMetadataEntity,
- universalIdentifier:
- cachedFieldMetadataEntity.standardId ?? cachedFieldMetadataEntity.id,
- type: cachedFieldMetadataEntity.type,
- };
-};
-
-type CachedFieldMetadataEntityAndObjectMetadataMap<
- T extends FieldMetadataType,
-> = {
- objectMetadataMaps: ObjectMetadataMaps;
- cachedFieldMetadataEntity: CachedFieldMetadataEntity;
-};
-
-export const fromCachedFieldMetadataEntityToFlatFieldMetadata = <
- T extends FieldMetadataType,
->(
- {
- cachedFieldMetadataEntity,
- objectMetadataMaps,
- }: CachedFieldMetadataEntityAndObjectMetadataMap,
- // This is intended to be abstract return type
-): FlatFieldMetadata => {
- if (
- isCachedFieldMetadataEntityOfType(
- cachedFieldMetadataEntity,
- FieldMetadataType.RELATION,
- ) ||
- isCachedFieldMetadataEntityOfType(
- cachedFieldMetadataEntity,
- FieldMetadataType.MORPH_RELATION,
- )
- ) {
- const relationTargetObjectMetadataItemWithFieldsMaps =
- objectMetadataMaps.byId[
- cachedFieldMetadataEntity.relationTargetObjectMetadataId
- ];
-
- if (!isDefined(relationTargetObjectMetadataItemWithFieldsMaps)) {
- throw new WorkspaceMetadataCacheException(
- 'Cache object is not up to date',
- WorkspaceMetadataCacheExceptionCode.OBJECT_METADATA_MAP_NOT_FOUND,
- );
- }
-
- const flatRelationTargetObjectMetadata =
- fromObjectMetadataItemWithFieldMapsToFlatObjectMetadataWithoutFields(
- relationTargetObjectMetadataItemWithFieldsMaps,
- );
-
- const relationTargetCachedFieldMetadata =
- relationTargetObjectMetadataItemWithFieldsMaps.fieldsById[
- cachedFieldMetadataEntity.relationTargetFieldMetadataId
- ];
-
- if (!isDefined(relationTargetCachedFieldMetadata)) {
- throw new WorkspaceMetadataCacheException(
- 'Cache field is not up to date',
- WorkspaceMetadataCacheExceptionCode.FIELD_METADATA_NOT_FOUND,
- );
- }
- if (
- !isCachedFieldMetadataEntityOfType(
- relationTargetCachedFieldMetadata,
- FieldMetadataType.RELATION,
- ) &&
- !isCachedFieldMetadataEntityOfType(
- relationTargetCachedFieldMetadata,
- FieldMetadataType.MORPH_RELATION,
- )
- ) {
- throw new WorkspaceMetadataCacheException(
- 'Cache field is invalid',
- WorkspaceMetadataCacheExceptionCode.FIELD_METADATA_INVALID,
- );
- }
-
- const flatRelationTargetFieldMetadata =
- fromCachedRelationFieldMetadataEntityToFlatRelationTargetFieldMetadata(
- relationTargetCachedFieldMetadata,
- );
-
- return {
- ...cachedFieldMetadataEntity,
- universalIdentifier:
- cachedFieldMetadataEntity.standardId ?? cachedFieldMetadataEntity.id,
- flatRelationTargetFieldMetadata,
- flatRelationTargetObjectMetadata,
- type: cachedFieldMetadataEntity.type,
- } satisfies FlatFieldMetadata<
- FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
- >;
- }
-
- return {
- ...cachedFieldMetadataEntity,
- universalIdentifier:
- cachedFieldMetadataEntity.standardId ?? cachedFieldMetadataEntity.id,
- flatRelationTargetFieldMetadata: null,
- flatRelationTargetObjectMetadata: null,
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util.ts
index 75d937bc769..8cebdfa3246 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util.ts
@@ -4,9 +4,9 @@ import {
} from 'twenty-shared/utils';
import { v4 } from 'uuid';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
import { buildDefaultFlatFieldMetadatasForCustomObject } from 'src/engine/metadata-modules/object-metadata/utils/build-default-flat-field-metadatas-for-custom-object.util';
@@ -17,16 +17,16 @@ type FromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreateArgs
{
createObjectInput: Omit;
workspaceId: string;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- };
+ } & Pick;
export const fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreate =
({
createObjectInput: rawCreateObjectInput,
workspaceId,
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
}: FromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreateArgs): {
flatObjectMetadataToCreate: FlatObjectMetadata;
relationTargetFlatFieldMetadataToCreate: FlatFieldMetadata[];
+ flatFieldMetadataToCreateOnObject: FlatFieldMetadata[];
flatIndexMetadataToCreate: FlatIndexMetadata[];
} => {
const createObjectInput =
@@ -53,8 +53,9 @@ export const fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCre
});
const createdAt = new Date();
const flatObjectMetadataToCreate: FlatObjectMetadata = {
+ fieldMetadataIds: [],
+ indexMetadataIds: [],
createdAt,
- flatFieldMetadatas: [],
updatedAt: createdAt,
duplicateCriteria: null,
description: createObjectInput.description ?? null,
@@ -93,12 +94,13 @@ export const fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCre
workspaceId,
});
- flatObjectMetadataToCreate.flatFieldMetadatas = [
+ const objectFlatFieldMetadatas: FlatFieldMetadata[] = [
...Object.values(defaultFlatFieldForCustomObjectMaps.fields),
...standardSourceFlatFieldMetadatas,
];
const defaultIndexesForCustomObject = buildDefaultIndexesForCustomObject({
+ objectFlatFieldMetadatas,
defaultFlatFieldForCustomObjectMaps,
flatObjectMetadata: flatObjectMetadataToCreate,
workspaceId,
@@ -106,9 +108,10 @@ export const fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCre
return {
flatObjectMetadataToCreate,
- relationTargetFlatFieldMetadataToCreate: standardTargetFlatFieldMetadatas,
flatIndexMetadataToCreate: Object.values(
defaultIndexesForCustomObject.indexes,
),
+ relationTargetFlatFieldMetadataToCreate: standardTargetFlatFieldMetadatas,
+ flatFieldMetadataToCreateOnObject: objectFlatFieldMetadatas,
};
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util.ts
index 3abb30b13b3..e93f1f4b68f 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util.ts
@@ -3,13 +3,13 @@ import {
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties,
} from 'twenty-shared/utils';
-import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-relation-flat-field-metadatas-target-flat-field-metadata-or-throw.util';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatObjectMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input';
import {
@@ -19,13 +19,15 @@ import {
type FromDeleteObjectInputToFlatFieldMetadatasToDeleteArgs = {
deleteObjectInput: DeleteOneObjectInput;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
- existingFlatIndexMaps: FlatEntityMaps;
-};
+} & Pick<
+ AllFlatEntityMaps,
+ 'flatFieldMetadataMaps' | 'flatObjectMetadataMaps' | 'flatIndexMaps'
+>;
export const fromDeleteObjectInputToFlatFieldMetadatasToDelete = ({
deleteObjectInput: rawDeleteObjectInput,
- existingFlatObjectMetadataMaps,
- existingFlatIndexMaps,
+ flatFieldMetadataMaps,
+ flatObjectMetadataMaps,
+ flatIndexMaps,
// This should return an AllFlatEntityMaps
}: FromDeleteObjectInputToFlatFieldMetadatasToDeleteArgs): {
flatFieldMetadatasToDelete: FlatFieldMetadata[];
@@ -38,11 +40,10 @@ export const fromDeleteObjectInputToFlatFieldMetadatasToDelete = ({
['id'],
);
- const flatObjectMetadataToDelete =
- findFlatObjectMetadataInFlatObjectMetadataMaps({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: objectMetadataToDeleteId,
- });
+ const flatObjectMetadataToDelete = findFlatEntityByIdInFlatEntityMapsOrThrow({
+ flatEntityMaps: flatObjectMetadataMaps,
+ flatEntityId: objectMetadataToDeleteId,
+ });
if (!isDefined(flatObjectMetadataToDelete)) {
throw new ObjectMetadataException(
@@ -51,27 +52,29 @@ export const fromDeleteObjectInputToFlatFieldMetadatasToDelete = ({
);
}
- const flatFieldMetadatasToDelete =
- flatObjectMetadataToDelete.flatFieldMetadatas.flatMap(
- (flatFieldMetadata) => {
- if (isMorphOrRelationFlatFieldMetadata(flatFieldMetadata)) {
- const relationTargetFlatFieldMetadata =
- findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- });
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata: flatObjectMetadataToDelete,
+ });
+ const flatFieldMetadatasToDelete = objectFlatFieldMetadatas.flatMap(
+ (flatFieldMetadata) => {
+ if (isMorphOrRelationFlatFieldMetadata(flatFieldMetadata)) {
+ const relationTargetFlatFieldMetadata =
+ findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow({
+ flatFieldMetadata,
+ flatFieldMetadataMaps,
+ });
- return [flatFieldMetadata, relationTargetFlatFieldMetadata];
- }
+ return [flatFieldMetadata, relationTargetFlatFieldMetadata];
+ }
- return [flatFieldMetadata];
- },
- );
+ return [flatFieldMetadata];
+ },
+ );
// TODO We should maintain a idsByObjectMetadataId in the flatIndexMaps
- const flatIndexMetadataToDelete = Object.values(
- existingFlatIndexMaps.byId,
- ).filter(
+ const flatIndexMetadataToDelete = Object.values(flatIndexMaps.byId).filter(
(flatIndex): flatIndex is FlatIndexMetadata =>
isDefined(flatIndex) &&
flatIndex.objectMetadataId === flatObjectMetadataToDelete.id,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-maps-to-flat-object-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-maps-to-flat-object-metadatas.util.ts
deleted file mode 100644
index 8230ebf5039..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-maps-to-flat-object-metadatas.util.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { isDefined } from 'twenty-shared/utils';
-
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util';
-
-export const fromFlatObjectMetadataMapsToFlatObjectMetadatas = (
- flatObjectMetadataMaps: FlatObjectMetadataMaps,
-): FlatObjectMetadata[] => {
- return Object.values(flatObjectMetadataMaps.byId)
- .filter(isDefined)
- .map(fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata);
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts
deleted file mode 100644
index c4159f41306..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-flat-object-metadata-with-flat-field-maps.util.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-import { addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-to-flat-object-metadata-with-flat-field-maps-or-throw.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export const fromFlatObjectMetadataToFlatObjectMetadataWithFlatFieldMaps = (
- flatObjectMetadata: FlatObjectMetadata,
-): FlatObjectMetadataWithFlatFieldMaps => {
- const emptyFlatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps =
- {
- ...flatObjectMetadata,
- flatFieldMetadatas: [],
- fieldIdByJoinColumnName: {},
- fieldIdByName: {},
- fieldsById: {},
- };
-
- return flatObjectMetadata.flatFieldMetadatas.reduce(
- (flatObjectMetadataWithFlatFieldMaps, flatFieldMetadata) =>
- addFlatFieldMetadataToFlatObjectMetadataWithFlatFieldMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataWithFlatFieldMaps,
- }),
- emptyFlatObjectMetadataWithFlatFieldMaps,
- );
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util.ts
index 890486f6fc6..24bfdf6d9e6 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util.ts
@@ -1,11 +1,8 @@
-import {
- type FlatObjectMetadataWithoutFields,
- type FlatObjectMetadata,
-} from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
+import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
export const fromFlatObjectMetadataToObjectMetadataDto = (
- flatObjectMetadata: FlatObjectMetadata | FlatObjectMetadataWithoutFields,
+ flatObjectMetadata: FlatObjectMetadata,
): ObjectMetadataDTO => {
const {
createdAt,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util.ts
deleted file mode 100644
index e642adb9e21..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-with-flat-field-maps-to-flat-object-metadatas.util.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { removePropertiesFromRecord } from 'twenty-shared/utils';
-
-import { type FlatObjectMetadataWithFlatFieldMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-with-flat-field-metadata-maps.type';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export const fromFlatObjectMetadataWithFlatFieldMapsToFlatObjectMetadata = (
- flatObjectMetadataWithFlatFieldMaps: FlatObjectMetadataWithFlatFieldMaps,
-): FlatObjectMetadata => {
- return removePropertiesFromRecord(flatObjectMetadataWithFlatFieldMaps, [
- 'fieldsById',
- 'fieldIdByName',
- 'fieldIdByJoinColumnName',
- ]);
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util.ts
deleted file mode 100644
index 6efac577407..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadatas-to-flat-object-metadata-maps.util.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { EMPTY_FLAT_OBJECT_METADATA_MAPS } from 'src/engine/metadata-modules/flat-object-metadata-maps/constant/empty-flat-object-metadata-maps.constant';
-import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-
-export const fromFlatObjectMetadatasToFlatObjectMetadataMaps = (
- flatObjectMetadatas: FlatObjectMetadata[],
-) => {
- return flatObjectMetadatas.reduce(
- (flatObjectMetadataMaps, flatObjectMetadata) =>
- addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata,
- flatObjectMetadataMaps,
- }),
- EMPTY_FLAT_OBJECT_METADATA_MAPS,
- );
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-entity-to-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-entity-to-flat-object-metadata.util.ts
index 66d80666d4b..cb2e4163479 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-entity-to-flat-object-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-entity-to-flat-object-metadata.util.ts
@@ -1,6 +1,5 @@
import { removePropertiesFromRecord } from 'twenty-shared/utils';
-import { fromFieldMetadataEntityToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util';
import {
type FlatObjectMetadata,
objectMetadataEntityRelationProperties,
@@ -17,11 +16,14 @@ export const fromObjectMetadataEntityToFlatObjectMetadata = (
return {
...objectMetadataEntityWithoutRelations,
+ indexMetadataIds: objectMetadataEntity.indexMetadatas.map(
+ (indexEntity) => indexEntity.id,
+ ),
+ fieldMetadataIds: objectMetadataEntity.fields.map(
+ (fieldEntity) => fieldEntity.id,
+ ),
universalIdentifier:
objectMetadataEntityWithoutRelations.standardId ??
objectMetadataEntityWithoutRelations.id,
- flatFieldMetadatas: objectMetadataEntity.fields.map(
- fromFieldMetadataEntityToFlatFieldMetadata,
- ),
};
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata-without-fields.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata-without-fields.util.ts
deleted file mode 100644
index 2bf949a03f6..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata-without-fields.util.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { type FlatObjectMetadataWithoutFields } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
-import { fromObjectMetadataEntityToFlatObjectMetadataWithoutFields } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/from-object-metadata-entity-to-flat-object-metadata-without-fields.util';
-
-export const fromObjectMetadataItemWithFieldMapsToFlatObjectMetadataWithoutFields =
- (
- objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps,
- ): FlatObjectMetadataWithoutFields => {
- const {
- fieldsById: _fieldsById,
- fieldIdByJoinColumnName: _fieldIdByJoinColumnName,
- fieldIdByName: _fieldIdByName,
- indexMetadatas,
- ...rest
- } = objectMetadataItemWithFieldMaps;
-
- return fromObjectMetadataEntityToFlatObjectMetadataWithoutFields({
- ...rest,
- fields: [],
- indexMetadatas,
- });
- };
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata.util.ts
deleted file mode 100644
index 74af41c130e..00000000000
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-object-metadata-item-with-field-maps-to-flat-object-metadata.util.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
-import { fromCachedFieldMetadataEntityToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-cached-field-metadata-entity-to-flat-field-metadata.util';
-import { type CachedFieldMetadataEntity } from 'src/engine/metadata-modules/types/cached-field-metadata-entity';
-import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
-import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
-
-type FromObjectMetadataItemWithFieldMapsToFlatObjectMetadataArgs = {
- objectMetadataItemWithFieldMaps: ObjectMetadataItemWithFieldMaps;
- objectMetadataMaps: ObjectMetadataMaps;
-};
-export const fromObjectMetadataItemWithFieldMapsToFlatObjectMetadata = ({
- objectMetadataItemWithFieldMaps,
- objectMetadataMaps,
-}: FromObjectMetadataItemWithFieldMapsToFlatObjectMetadataArgs): FlatObjectMetadata => {
- const {
- fieldsById,
- fieldIdByJoinColumnName: _fieldIdByJoinColumnName,
- fieldIdByName: _fieldIdByName,
- indexMetadatas: _indexMetadatas,
- ...rest
- } = objectMetadataItemWithFieldMaps;
-
- const cachedFieldMetadataEntities =
- Object.values(fieldsById);
-
- const flatFieldMetadatas = cachedFieldMetadataEntities.map(
- (cachedFieldMetadataEntity) =>
- fromCachedFieldMetadataEntityToFlatFieldMetadata({
- cachedFieldMetadataEntity,
- objectMetadataMaps,
- }),
- );
-
- return {
- ...rest,
- flatFieldMetadatas,
- universalIdentifier: rest.standardId ?? rest.id,
- };
-};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata.util.ts
index 0f43e92f646..f51f1835139 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata.util.ts
@@ -5,10 +5,9 @@ import {
} from 'twenty-shared/utils';
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatObjectMetadataInFlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-object-metadata-in-flat-object-metadata-maps.util';
import { FLAT_OBJECT_METADATA_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-object-metadata/constants/flat-object-metadata-properties-to-compare.constant';
import { type FlatObjectMetadataPropertiesToCompare } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata-properties-to-compare.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
@@ -24,9 +23,11 @@ import { type ObjectMetadataStandardOverridesProperties } from 'src/engine/metad
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
type FromUpdateObjectInputToFlatObjectMetadataArgs = {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
updateObjectInput: UpdateOneObjectInput;
-} & Pick;
+} & Pick<
+ AllFlatEntityMaps,
+ 'flatIndexMaps' | 'flatObjectMetadataMaps' | 'flatFieldMetadataMaps'
+>;
const objectMetadataEditableProperties =
FLAT_OBJECT_METADATA_PROPERTIES_TO_COMPARE.filter(
@@ -45,9 +46,10 @@ type UpdatedFlatObjectAndOtherObjectFieldMetadatas = {
};
export const fromUpdateObjectInputToFlatObjectMetadata = ({
- existingFlatObjectMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
updateObjectInput: rawUpdateObjectInput,
flatIndexMaps,
+ flatFieldMetadataMaps,
}: FromUpdateObjectInputToFlatObjectMetadataArgs): UpdatedFlatObjectAndOtherObjectFieldMetadatas => {
const { id: objectMetadataIdToUpdate } =
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties(
@@ -59,11 +61,10 @@ export const fromUpdateObjectInputToFlatObjectMetadata = ({
objectMetadataEditableProperties,
);
- const flatObjectMetadataToUpdate =
- findFlatObjectMetadataInFlatObjectMetadataMaps({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId: objectMetadataIdToUpdate,
- });
+ const flatObjectMetadataToUpdate = findFlatEntityByIdInFlatEntityMaps({
+ flatEntityMaps: existingFlatObjectMetadataMaps,
+ flatEntityId: objectMetadataIdToUpdate,
+ });
if (!isDefined(flatObjectMetadataToUpdate)) {
throw new ObjectMetadataException(
@@ -148,7 +149,7 @@ export const fromUpdateObjectInputToFlatObjectMetadata = ({
const newUpdatedOtherObjectFlatFieldMetadatas =
property === 'nameSingular' || property === 'namePlural'
? renameRelatedMorphFieldOnObjectNamesUpdate({
- existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps,
fromFlatObjectMetadata: updatedFlatObjectMetadata,
toFlatObjectMetadata: updatedFlatObjectMetadata,
})
@@ -157,6 +158,7 @@ export const fromUpdateObjectInputToFlatObjectMetadata = ({
const newUpdatedFlatIndexMetadatas =
property === 'nameSingular'
? recomputeIndexAfterFlatObjectMetadataSingularNameUpdate({
+ flatFieldMetadataMaps,
existingFlatObjectMetadata: flatObjectMetadataToUpdate,
flatIndexMaps,
updatedSingularName: updatedFlatObjectMetadata.nameSingular,
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/get-flat-object-metadata-many-to-one-target-morph-relation-flat-field-metadatas-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/get-flat-object-metadata-many-to-one-target-morph-relation-flat-field-metadatas-or-throw.util.ts
index 2643065069b..a6491c69265 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/get-flat-object-metadata-many-to-one-target-morph-relation-flat-field-metadatas-or-throw.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/get-flat-object-metadata-many-to-one-target-morph-relation-flat-field-metadatas-or-throw.util.ts
@@ -1,46 +1,40 @@
import { FieldMetadataType } from 'twenty-shared/types';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
-import { findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/find-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
type GetFlatObjectMetadataTargetMorphRelationFlatFieldMetadatasOrThrowArgs = {
- flatObjectMetadata: FlatObjectMetadata;
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
+ objectFlatFieldMetadatas: FlatFieldMetadata[];
+} & Pick;
export const getFlatObjectMetadataTargetMorphRelationFlatFieldMetadatasOrThrow =
({
- flatObjectMetadata,
- existingFlatObjectMetadataMaps,
+ objectFlatFieldMetadatas,
+ flatFieldMetadataMaps,
}: GetFlatObjectMetadataTargetMorphRelationFlatFieldMetadatasOrThrowArgs): FlatFieldMetadata[] => {
- const manyToOneMorphRelationTargetFlatFieldMetadataIds =
- flatObjectMetadata.flatFieldMetadatas
- .filter(
- (
- flatFieldMetadata,
- ): flatFieldMetadata is FlatFieldMetadata =>
- isFlatFieldMetadataOfType(
- flatFieldMetadata,
- FieldMetadataType.RELATION,
- ) &&
- isFlatFieldMetadataOfType(
- flatFieldMetadata.flatRelationTargetFieldMetadata,
- FieldMetadataType.MORPH_RELATION,
- ),
+ return objectFlatFieldMetadatas.flatMap((flatFieldMetadata) => {
+ if (
+ !isFlatFieldMetadataOfType(
+ flatFieldMetadata,
+ FieldMetadataType.RELATION,
)
- .map(({ id: fieldMetadataId, objectMetadataId }) => ({
- fieldMetadataId,
- objectMetadataId,
- }));
+ ) {
+ return [];
+ }
- return manyToOneMorphRelationTargetFlatFieldMetadataIds.map(
- ({ fieldMetadataId, objectMetadataId }) =>
- findFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- fieldMetadataId,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataId,
- }),
- ) as FlatFieldMetadata[];
+ const targetFlatFieldMetadata = findFlatEntityByIdInFlatEntityMapsOrThrow(
+ {
+ flatEntityId: flatFieldMetadata.relationTargetFieldMetadataId,
+ flatEntityMaps: flatFieldMetadataMaps,
+ },
+ );
+
+ return isFlatFieldMetadataOfType(
+ targetFlatFieldMetadata,
+ FieldMetadataType.MORPH_RELATION,
+ )
+ ? [targetFlatFieldMetadata]
+ : [];
+ });
};
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-index-after-flat-object-metadata-singular-name-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-index-after-flat-object-metadata-singular-name-update.util.ts
index 299410ef6fa..5b6fedb8b48 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-index-after-flat-object-metadata-singular-name-update.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-index-after-flat-object-metadata-singular-name-update.util.ts
@@ -1,6 +1,7 @@
import { isDefined } from 'twenty-shared/utils';
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { generateFlatIndexMetadataWithNameOrThrow } from 'src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util';
@@ -8,11 +9,12 @@ import { generateFlatIndexMetadataWithNameOrThrow } from 'src/engine/metadata-mo
type RecomputeIndexAfterFlatObjectMetadataSingularNameUpdateArgs = {
existingFlatObjectMetadata: FlatObjectMetadata;
updatedSingularName: string;
-} & Pick;
+} & Pick;
export const recomputeIndexAfterFlatObjectMetadataSingularNameUpdate = ({
existingFlatObjectMetadata,
flatIndexMaps,
updatedSingularName,
+ flatFieldMetadataMaps,
}: RecomputeIndexAfterFlatObjectMetadataSingularNameUpdateArgs): FlatIndexMetadata[] => {
const allRelatedFlatIndexMetadata = Object.values(flatIndexMaps.byId).filter(
(flatIndexMetadata): flatIndexMetadata is FlatIndexMetadata =>
@@ -29,10 +31,17 @@ export const recomputeIndexAfterFlatObjectMetadataSingularNameUpdate = ({
nameSingular: updatedSingularName,
};
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata: optimisticFlatObjectMetadata,
+ });
+
return allRelatedFlatIndexMetadata.map((flatIndex) => {
const newIndex = generateFlatIndexMetadataWithNameOrThrow({
flatIndex,
flatObjectMetadata: optimisticFlatObjectMetadata,
+ objectFlatFieldMetadatas,
});
return newIndex;
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
index 56ee9da28bd..8382e6de6a2 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
@@ -4,10 +4,11 @@ import {
type FromTo,
} from 'twenty-shared/types';
+import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
import { computeMorphOrRelationFieldJoinColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-morph-or-relation-field-join-column-name.util';
import { computeMorphRelationFieldName } from 'src/engine/metadata-modules/field-metadata/utils/compute-morph-relation-field-name.util';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
-import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { getFlatObjectMetadataTargetMorphRelationFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-object-metadata/utils/get-flat-object-metadata-many-to-one-target-morph-relation-flat-field-metadatas-or-throw.util';
@@ -34,19 +35,23 @@ const searchAndReplaceLast = ({
type RenameRelatedMorphFieldOnObjectNamesUpdateArgs = FromTo<
FlatObjectMetadata,
'flatObjectMetadata'
-> & {
- existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
-};
+> &
+ Pick;
// TODO We should recompute each index here too
export const renameRelatedMorphFieldOnObjectNamesUpdate = ({
fromFlatObjectMetadata,
- existingFlatObjectMetadataMaps,
toFlatObjectMetadata,
+ flatFieldMetadataMaps,
}: RenameRelatedMorphFieldOnObjectNamesUpdateArgs): FlatFieldMetadata[] => {
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps,
+ flatObjectMetadata: fromFlatObjectMetadata,
+ });
const manyToOneMorphRelationFlatFieldMetadatas =
getFlatObjectMetadataTargetMorphRelationFlatFieldMetadatasOrThrow({
- flatObjectMetadata: fromFlatObjectMetadata,
- existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps,
+ objectFlatFieldMetadatas,
});
const updatedFlatFieldMetadatas =
diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts
index 5f82e1627aa..82fc6a104ba 100644
--- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts
@@ -4,20 +4,28 @@ import {
isLabelIdentifierFieldMetadataTypes,
} from 'twenty-shared/utils';
+import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { type FlatObjectMetadataValidationError } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata-validation-error.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
-export const validateFlatObjectMetadataIdentifiers = (
- flatObjectMetadata: FlatObjectMetadata,
-) => {
+export const validateFlatObjectMetadataIdentifiers = ({
+ flatObjectMetadata,
+ objectFlatFieldMetadatas,
+}: {
+ flatObjectMetadata: Pick<
+ FlatObjectMetadata,
+ 'labelIdentifierFieldMetadataId' | 'imageIdentifierFieldMetadataId'
+ >;
+ objectFlatFieldMetadatas: FlatFieldMetadata[];
+}) => {
const errors: FlatObjectMetadataValidationError[] = [];
const { labelIdentifierFieldMetadataId, imageIdentifierFieldMetadataId } =
flatObjectMetadata;
if (isDefined(labelIdentifierFieldMetadataId)) {
- const flatFieldMetadata = flatObjectMetadata.flatFieldMetadatas.find(
+ const flatFieldMetadata = objectFlatFieldMetadatas.find(
(flatFieldMetadata) =>
flatFieldMetadata.id === labelIdentifierFieldMetadataId,
);
@@ -40,7 +48,7 @@ export const validateFlatObjectMetadataIdentifiers = (
}
if (isDefined(imageIdentifierFieldMetadataId)) {
- const relatedFlatFieldMetadata = flatObjectMetadata.flatFieldMetadatas.find(
+ const relatedFlatFieldMetadata = objectFlatFieldMetadatas.find(
(flatFieldMetadata) =>
flatFieldMetadata.id === imageIdentifierFieldMetadataId,
);
diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts
index bddbb4cc6d4..730568389e5 100644
--- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/generate-flat-index.util.ts
@@ -4,6 +4,7 @@ import {
FlatEntityMapsException,
FlatEntityMapsExceptionCode,
} from 'src/engine/core-modules/common/exceptions/flat-entity-maps.exception';
+import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
@@ -11,20 +12,21 @@ import { generateDeterministicIndexNameV2 } from 'src/engine/metadata-modules/in
type GenerateFlatIndexArgs = {
flatObjectMetadata: FlatObjectMetadata;
+ objectFlatFieldMetadatas: FlatFieldMetadata[];
flatIndex: Omit;
};
export const generateFlatIndexMetadataWithNameOrThrow = ({
flatObjectMetadata,
+ objectFlatFieldMetadatas,
flatIndex,
}: GenerateFlatIndexArgs): FlatIndexMetadata => {
const orderedFlatFieldNames = flatIndex.flatIndexFieldMetadatas
.sort((a, b) => a.order - b.order)
.map((flatIndexField) => {
- const relatedFlatFieldMetadata =
- flatObjectMetadata.flatFieldMetadatas.find(
- (flatFieldMetadata) =>
- flatFieldMetadata.id === flatIndexField.fieldMetadataId,
- );
+ const relatedFlatFieldMetadata = objectFlatFieldMetadatas.find(
+ (flatFieldMetadata) =>
+ flatFieldMetadata.id === flatIndexField.fieldMetadataId,
+ );
if (!isDefined(relatedFlatFieldMetadata)) {
throw new FlatEntityMapsException(
diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts
index b419c9a2ec2..d9848ccb852 100644
--- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts
@@ -2,23 +2,19 @@ import { Injectable } from '@nestjs/common';
import { isDefined } from 'twenty-shared/utils';
-import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service.';
+import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
+import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util';
import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util';
import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum';
import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum';
import { FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type';
import { fromCreateViewFieldInputToFlatViewFieldToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util';
import { fromCreateViewInputToFlatViewToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util';
-import { addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/add-flat-object-metadata-to-flat-object-metadata-maps-or-throw.util';
-import { deleteFieldFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-field-from-flat-object-metadata-maps-or-throw.util';
-import { deleteObjectFromFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/delete-object-from-flat-object-metadata-maps-or-throw.util';
-import { getSubFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-or-throw.util';
-import { getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/get-sub-flat-object-metadata-maps-out-of-flat-field-metadatas-or-throw.util';
-import { replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-field-metadata-in-flat-object-metadata-maps-or-throw.util';
-import { replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-object-metadata-maps/utils/replace-flat-object-metadata-in-flat-object-metadata-maps-or-throw.util';
+import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
+import { findObjectFieldsInFlatFieldMetadataMapsOrThrow } from 'src/engine/metadata-modules/flat-field-metadata/utils/find-object-fields-in-flat-field-metadata-maps-or-throw.util';
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreate } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util';
import { fromDeleteObjectInputToFlatFieldMetadatasToDelete } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util';
@@ -58,33 +54,43 @@ export class ObjectMetadataServiceV2 {
const {
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
- } =
- await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
- {
- workspaceId,
- flatEntities: ['flatObjectMetadataMaps', 'flatIndexMaps'],
- },
- );
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ } = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: [
+ 'flatObjectMetadataMaps',
+ 'flatIndexMaps',
+ 'flatFieldMetadataMaps',
+ ],
+ },
+ );
const {
flatObjectMetadata: optimisticallyUpdatedFlatObjectMetadata,
otherObjectFlatFieldMetadataToUpdate: otherObjectFlatFieldMetadatas,
flatIndexMetadataToUpdate,
} = fromUpdateObjectInputToFlatObjectMetadata({
- existingFlatObjectMetadataMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
updateObjectInput,
flatIndexMaps: existingFlatIndexMaps,
});
- const toFlatObjectMetadataMaps = otherObjectFlatFieldMetadatas.reduce(
- (flatObjectMetadataMaps, flatFieldMetadata) =>
- replaceFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
+ const toFlatObjectMetadataMaps = addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: optimisticallyUpdatedFlatObjectMetadata,
+ flatEntityMaps: EMPTY_FLAT_ENTITY_MAPS,
+ });
+
+ const toFlatFieldMetadataMaps = otherObjectFlatFieldMetadatas.reduce(
+ (flatFieldMaps, flatFieldMetadata) =>
+ replaceFlatEntityInFlatEntityMapsOrThrow({
+ flatEntity: flatFieldMetadata,
+ flatEntityMaps: flatFieldMaps,
}),
- replaceFlatObjectMetadataInFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata: optimisticallyUpdatedFlatObjectMetadata,
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ getSubFlatEntityMapsOrThrow({
+ flatEntityIds: otherObjectFlatFieldMetadatas.map(({ id }) => id),
+ flatEntityMaps: existingFlatFieldMetadataMaps,
}),
);
@@ -94,7 +100,10 @@ export class ObjectMetadataServiceV2 {
flatEntity: flatIndexMetadata,
flatEntityMaps: flatIndexMaps,
}),
- existingFlatIndexMaps,
+ getSubFlatEntityMapsOrThrow({
+ flatEntityIds: flatIndexMetadataToUpdate.map(({ id }) => id),
+ flatEntityMaps: existingFlatIndexMaps,
+ }),
);
const validateAndBuildResult =
@@ -109,6 +118,10 @@ export class ObjectMetadataServiceV2 {
from: existingFlatIndexMaps,
to: toFlatIndexMaps,
},
+ flatFieldMetadataMaps: {
+ from: existingFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
+ },
},
buildOptions: {
isSystemBuild: false,
@@ -168,24 +181,28 @@ export class ObjectMetadataServiceV2 {
const {
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatIndexMaps: existingFlatIndexMaps,
- } =
- await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
- {
- workspaceId,
- flatEntities: ['flatObjectMetadataMaps', 'flatIndexMaps'],
- },
- );
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
+ } = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
+ {
+ workspaceId,
+ flatEntities: [
+ 'flatObjectMetadataMaps',
+ 'flatIndexMaps',
+ 'flatFieldMetadataMaps',
+ ],
+ },
+ );
const {
flatFieldMetadatasToDelete,
flatObjectMetadataToDelete,
flatIndexToDelete,
} = fromDeleteObjectInputToFlatFieldMetadatasToDelete({
- existingFlatIndexMaps,
+ flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
+ flatIndexMaps: existingFlatIndexMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
deleteObjectInput,
- existingFlatObjectMetadataMaps,
});
- const { id: objectMetadataToDeleteId } = flatObjectMetadataToDelete;
const impactedObjectMetadataIds = Array.from(
new Set(
@@ -195,29 +212,36 @@ export class ObjectMetadataServiceV2 {
),
);
- const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: impactedObjectMetadataIds,
+ const fromFlatObjectMetadataMaps = getSubFlatEntityMapsOrThrow({
+ flatEntityMaps: existingFlatObjectMetadataMaps,
+ flatEntityIds: impactedObjectMetadataIds,
});
- const toFlatObjectMetadataMaps = flatFieldMetadatasToDelete
- .filter(
- (flatFieldMetadataToDelete) =>
- flatFieldMetadataToDelete.objectMetadataId !==
- objectMetadataToDeleteId,
- )
- .reduce(
- (flatObjectMetadataMaps, flatFieldMetadata) =>
- deleteFieldFromFlatObjectMetadataMapsOrThrow({
- fieldMetadataId: flatFieldMetadata.id,
- objectMetadataId: flatFieldMetadata.objectMetadataId,
- flatObjectMetadataMaps,
- }),
- deleteObjectFromFlatObjectMetadataMapsOrThrow({
- flatObjectMetadataMaps: fromFlatObjectMetadataMaps,
- objectMetadataId: objectMetadataToDeleteId,
+ const toFlatObjectMetadataMaps = deleteFlatEntityFromFlatEntityMapsOrThrow({
+ entityToDeleteId: flatObjectMetadataToDelete.id,
+ flatEntityMaps: fromFlatObjectMetadataMaps,
+ });
+
+ const fromFlatFieldMetadataMaps = getSubFlatEntityMapsOrThrow({
+ flatEntityMaps: existingFlatFieldMetadataMaps,
+ flatEntityIds: flatFieldMetadatasToDelete.map(
+ (flatField) => flatField.id,
+ ),
+ });
+
+ const toFlatFieldMetadataMaps = flatFieldMetadatasToDelete.reduce(
+ (flatFieldMaps, flatField) =>
+ deleteFlatEntityFromFlatEntityMapsOrThrow({
+ entityToDeleteId: flatField.id,
+ flatEntityMaps: flatFieldMaps,
}),
- );
+ fromFlatFieldMetadataMaps,
+ );
+
+ const fromFlatIndexMaps = getSubFlatEntityMapsOrThrow({
+ flatEntityIds: flatIndexToDelete.map((flatIndex) => flatIndex.id),
+ flatEntityMaps: existingFlatIndexMaps,
+ });
const toFlatIndexMaps = flatIndexToDelete.reduce(
(flatIndexMaps, flatIndex) =>
@@ -225,7 +249,7 @@ export class ObjectMetadataServiceV2 {
entityToDeleteId: flatIndex.id,
flatEntityMaps: flatIndexMaps,
}),
- existingFlatIndexMaps,
+ fromFlatIndexMaps,
);
const validateAndBuildResult =
@@ -237,9 +261,13 @@ export class ObjectMetadataServiceV2 {
to: toFlatObjectMetadataMaps,
},
flatIndexMaps: {
- from: existingFlatIndexMaps,
+ from: fromFlatIndexMaps,
to: toFlatIndexMaps,
},
+ flatFieldMetadataMaps: {
+ from: fromFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
+ },
},
buildOptions: {
inferDeletionFromMissingEntities: true,
@@ -273,6 +301,7 @@ export class ObjectMetadataServiceV2 {
flatViewMaps: existingFlatViewMaps,
flatViewFieldMaps: existingFlatViewFieldMaps,
flatIndexMaps: existingFlatIndexMaps,
+ flatFieldMetadataMaps: existingFlatFieldMetadataMaps,
} = await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
@@ -281,79 +310,60 @@ export class ObjectMetadataServiceV2 {
'flatViewMaps',
'flatViewFieldMaps',
'flatIndexMaps',
+ 'flatFieldMetadataMaps',
],
},
);
const {
flatObjectMetadataToCreate,
- relationTargetFlatFieldMetadataToCreate,
flatIndexMetadataToCreate,
+ flatFieldMetadataToCreateOnObject,
+ relationTargetFlatFieldMetadataToCreate,
} = fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreate({
createObjectInput,
workspaceId,
- existingFlatObjectMetadataMaps,
- });
-
- const existingFlatObjectMetadataMapsWithTargetRelationFlatFieldMetadatas =
- relationTargetFlatFieldMetadataToCreate.reduce(
- (flatObjectMetadataMaps, flatFieldMetadata) =>
- addFlatFieldMetadataInFlatObjectMetadataMapsOrThrow({
- flatFieldMetadata,
- flatObjectMetadataMaps,
- }),
- existingFlatObjectMetadataMaps,
- );
-
- const flatObjectMetadataMapsWithTargetRelationFlatFieldMetadatas =
- getSubFlatObjectMetadataMapsOutOfFlatFieldMetadatasOrThrow({
- flatFieldMetadatas: relationTargetFlatFieldMetadataToCreate,
- flatObjectMetadataMaps:
- existingFlatObjectMetadataMapsWithTargetRelationFlatFieldMetadatas,
- });
-
- const toFlatObjectMetadataMaps =
- addFlatObjectMetadataToFlatObjectMetadataMapsOrThrow({
- flatObjectMetadata: flatObjectMetadataToCreate,
- flatObjectMetadataMaps:
- flatObjectMetadataMapsWithTargetRelationFlatFieldMetadatas,
- });
-
- const impactedObjectMetadataIds = [
- ...new Set(
- relationTargetFlatFieldMetadataToCreate.map(
- ({ objectMetadataId }) => objectMetadataId,
- ),
- ),
- ];
- const fromFlatObjectMetadataMaps = getSubFlatObjectMetadataMapsOrThrow({
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
- objectMetadataIds: [
- ...(isDefined(
- existingFlatObjectMetadataMaps.byId[flatObjectMetadataToCreate.id],
- )
- ? [flatObjectMetadataToCreate.id]
- : []),
- ...impactedObjectMetadataIds,
- ],
});
- const flatDefaultViewToCreate = await this.createDefaultFlatView(
- flatObjectMetadataToCreate,
- workspaceId,
+ const toFlatFieldMetadataMaps = [
+ ...flatFieldMetadataToCreateOnObject,
+ ...relationTargetFlatFieldMetadataToCreate,
+ ].reduce(
+ (flatFieldMaps, flatField) =>
+ addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: flatField,
+ flatEntityMaps: flatFieldMaps,
+ }),
+ EMPTY_FLAT_ENTITY_MAPS,
);
+ const toFlatObjectMetadataMaps = addFlatEntityToFlatEntityMapsOrThrow({
+ flatEntity: flatObjectMetadataToCreate,
+ flatEntityMaps: EMPTY_FLAT_ENTITY_MAPS,
+ });
+
+ const flatDefaultViewToCreate = await this.createDefaultFlatView({
+ objectMetadata: flatObjectMetadataToCreate,
+ workspaceId,
+ });
+
const toFlatViewMaps = addFlatEntityToFlatEntityMapsOrThrow({
flatEntity: flatDefaultViewToCreate,
flatEntityMaps: existingFlatViewMaps,
});
+ const { objectFlatFieldMetadatas } =
+ findObjectFieldsInFlatFieldMetadataMapsOrThrow({
+ flatFieldMetadataMaps: toFlatFieldMetadataMaps,
+ flatObjectMetadata: flatObjectMetadataToCreate,
+ });
const flatDefaultViewFieldsToCreate =
- await this.createDefaultFlatViewFields(
- flatObjectMetadataToCreate,
- flatDefaultViewToCreate.id,
+ await this.createDefaultFlatViewFields({
+ objectFlatFieldMetadatas,
+ viewId: flatDefaultViewToCreate.id,
workspaceId,
- );
+ });
const toFlatViewFieldMaps = flatDefaultViewFieldsToCreate.reduce(
(acc, flatViewField) =>
@@ -378,7 +388,7 @@ export class ObjectMetadataServiceV2 {
{
fromToAllFlatEntityMaps: {
flatObjectMetadataMaps: {
- from: fromFlatObjectMetadataMaps,
+ from: existingFlatObjectMetadataMaps,
to: toFlatObjectMetadataMaps,
},
flatViewMaps: {
@@ -389,6 +399,10 @@ export class ObjectMetadataServiceV2 {
from: existingFlatViewFieldMaps,
to: toFlatViewFieldMaps,
},
+ flatFieldMetadataMaps: {
+ from: existingFlatFieldMetadataMaps,
+ to: toFlatFieldMetadataMaps,
+ },
flatIndexMaps: {
from: existingFlatIndexMaps,
to: toFlatIndexMaps,
@@ -427,18 +441,21 @@ export class ObjectMetadataServiceV2 {
);
}
- await this.createWorkspaceFavoriteForNewObjectDefaultView(
- flatDefaultViewToCreate,
+ await this.createWorkspaceFavoriteForNewObjectDefaultView({
+ view: flatDefaultViewToCreate,
workspaceId,
- );
+ });
return createdFlatObjectMetadata;
}
- private async createDefaultFlatView(
- objectMetadata: FlatObjectMetadata,
- workspaceId: string,
- ) {
+ private async createDefaultFlatView({
+ objectMetadata,
+ workspaceId,
+ }: {
+ objectMetadata: FlatObjectMetadata;
+ workspaceId: string;
+ }) {
const defaultViewInput = {
objectMetadataId: objectMetadata.id,
name: `All {objectLabelPlural}`,
@@ -456,12 +473,16 @@ export class ObjectMetadataServiceV2 {
return flatViewFromCreateInput;
}
- private async createDefaultFlatViewFields(
- objectMetadata: FlatObjectMetadata,
- viewId: string,
- workspaceId: string,
- ) {
- const defaultViewFields = objectMetadata.flatFieldMetadatas
+ private async createDefaultFlatViewFields({
+ objectFlatFieldMetadatas,
+ viewId,
+ workspaceId,
+ }: {
+ objectFlatFieldMetadatas: FlatFieldMetadata[];
+ viewId: string;
+ workspaceId: string;
+ }) {
+ const defaultViewFields = objectFlatFieldMetadatas
.filter((field) => field.name !== 'id' && field.name !== 'deletedAt')
.map((field, index) =>
fromCreateViewFieldInputToFlatViewFieldToCreate({
@@ -479,10 +500,13 @@ export class ObjectMetadataServiceV2 {
return defaultViewFields;
}
- private async createWorkspaceFavoriteForNewObjectDefaultView(
- view: FlatView,
- workspaceId: string,
- ) {
+ private async createWorkspaceFavoriteForNewObjectDefaultView({
+ view,
+ workspaceId,
+ }: {
+ view: FlatView;
+ workspaceId: string;
+ }) {
const favoriteRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace(
workspaceId,
diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts
index c6e8e13e29f..23438d06a4c 100644
--- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts
@@ -19,8 +19,6 @@ import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service';
-import { FlatFieldMetadataValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-validator.service';
-import { FlatObjectMetadataValidatorService } from 'src/engine/metadata-modules/flat-object-metadata/services/flat-object-metadata-validator.service';
import { IndexMetadataModule } from 'src/engine/metadata-modules/index-metadata/index-metadata.module';
import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input';
import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto';
@@ -46,6 +44,7 @@ import { WorkspacePermissionsCacheModule } from 'src/engine/metadata-modules/wor
import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module';
+import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module';
@Module({
@@ -78,7 +77,6 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa
services: [
ObjectMetadataService,
ObjectMetadataServiceV2,
- FlatObjectMetadataValidatorService,
FlatFieldMetadataValidatorService,
FlatFieldMetadataTypeValidatorService,
ObjectMetadataMigrationService,
diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.resolver.ts
index 98ed2888bc8..7f7916ecded 100644
--- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.resolver.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.resolver.ts
@@ -12,6 +12,7 @@ import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/featu
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { PreventNestToAutoLogGraphqlErrorsFilter } from 'src/engine/core-modules/graphql/filters/prevent-nest-to-auto-log-graphql-errors.filter';
import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe';
+import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
import { I18nContext } from 'src/engine/core-modules/i18n/types/i18n-context.type';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { type IDataloaders } from 'src/engine/dataloaders/dataloader.interface';
@@ -31,7 +32,6 @@ import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-meta
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { objectMetadataGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util';
import { resolveObjectMetadataStandardOverride } from 'src/engine/metadata-modules/object-metadata/utils/resolve-object-metadata-standard-override.util';
-import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
import { PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants';
import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/permissions/utils/permissions-graphql-api-exception.filter';
diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts
index 908143bf189..1b196980280 100644
--- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts
+++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts
@@ -52,6 +52,7 @@ import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-
import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service';
import { CUSTOM_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { isSearchableFieldType } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util';
+import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.service';
import { ObjectMetadataEntity } from './object-metadata.entity';
@@ -75,6 +76,7 @@ export class ObjectMetadataService extends TypeOrmQueryService