Extract field metadata build out of object metadata build (#14763)

# Introduction

Extracting the legacy fields build and dispatch out of the object one to
follow the generic flat entity build, also update caches entries for
object

## Main tasks
- flat field map cache
- flat field builder
- refactored the dispatch matrix to return flat entity maps instead of
flat entity arrays
- orchestrator aggregator
- removing legacy code
- making universal identifier aka standardId of standard field for
custom object deterministically dynamic
- perfs debug logs for v2

## TODO
- [x] Refactor the generic entity builder to be dependency flat maps in
order to main foreign keys list in flat parent
- [x] Refactor the flat object metadata to contain the array of related
fields and avoid costy find object fields
- [ ] Improve the create field handler to handle multiple field at once
- [ ] Refactor the dispatch to embbed the comparison
- [ ] Improve perf by extracting from elements out of existing
- [ ] Fix the labelIdentifierId validators on object before field
creation ( integ tests are in failing mode )

## Debug logs snippet

```ts
[EntityBuilder fieldMetadata] matrix computation: 0.027ms
[EntityBuilder fieldMetadata] creation validation: 0.001ms
[EntityBuilder fieldMetadata] deletion validation: 0.293ms
[EntityBuilder fieldMetadata] update validation: 0.006ms
[EntityBuilder fieldMetadata] entity processing: 0.363ms
[EntityBuilder fieldMetadata] validateAndBuild: 0.455ms
[EntityBuilder index] matrix computation: 0.005ms
[EntityBuilder index] creation validation: 0.001ms
[EntityBuilder index] deletion validation: 0.146ms
[EntityBuilder index] update validation: 0.004ms
[EntityBuilder index] entity processing: 0.199ms
[EntityBuilder index] validateAndBuild: 0.228ms
[Runner] Initial cache retrieval: 0.549ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_index executeForWorkspaceSchema: 11.665ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_index executeForMetadata: 12.864ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_field executeForWorkspaceSchema: 1.476ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_field executeForMetadata: 6.816ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_field executeForWorkspaceSchema: 0.062ms
[BaseWorkspaceMigrationRunnerActionHandlerService] delete_field executeForMetadata: 0.889ms
[Runner] Transaction execution: 23.434ms
[Runner] Cache invalidation: 316.662ms
[Runner] Total execution: 340.767ms
```
As you can see cache invalidation is way to long, we could replace the
cache by the optimistic in the end
This commit is contained in:
Paul Rastoin
2025-10-02 18:07:34 +02:00
committed by GitHub
parent d4b83df3f5
commit 170f6d27c5
240 changed files with 11385 additions and 17744 deletions
@@ -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);
@@ -8,4 +8,5 @@ export const ALL_FLAT_ENTITY_MAPS_PROPERTIES = [
'flatServerlessFunctionMaps',
'flatDatabaseEventTriggerMaps',
'flatCronTriggerMaps',
'flatFieldMetadataMaps',
] as const satisfies (keyof AllFlatEntityMaps)[];
@@ -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,
@@ -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({
@@ -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;
@@ -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<P>}Maps`]: FlatEntityMaps<
AllFlatEntitiesByMetadataEngineName[P]
>;
},
'flatObjectMetadataMaps'
> & {
flatObjectMetadataMaps: FlatObjectMetadataMaps;
export type AllFlatEntityMaps = {
[P in keyof AllFlatEntitiesByMetadataEngineName as FromMetadataEngineNameToFlatEntityMapsKey<P>]: FlatEntityMaps<
AllFlatEntitiesByMetadataEngineName[P]
>;
};
@@ -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<P>}Maps`;
@@ -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}`);
}
}
}
@@ -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<ViewFieldDTO> {
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,
@@ -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';
@@ -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],
})
@@ -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<RelationDTO | null> = [];
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<MorphRelationLoaderPayload, RelationDTO[] | null>(
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<RelationDTO[] | null> = [];
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;
},
@@ -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';
@@ -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';
@@ -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<typeof fromCreateFieldInputToFlatFieldMetadatasToCreate>
>[] = [];
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,
@@ -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<FieldMetadataEntit
private readonly fieldMetadataRelationService: FieldMetadataRelationService,
private readonly fieldMetadataServiceV2: FieldMetadataServiceV2,
private readonly indexMetadataService: IndexMetadataService,
private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService,
) {
super(fieldMetadataRepository);
}
@@ -141,6 +143,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
await this.workspaceMetadataCacheService.getExistingOrRecomputeMetadataMaps(
{ workspaceId: fieldMetadataInput.workspaceId },
);
const { workspaceId } = fieldMetadataInput;
let existingFieldMetadata: FieldMetadataEntity | undefined;
@@ -397,6 +400,11 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
fieldMetadataInput.workspaceId,
);
await this.flatEntityMapsCacheService.invalidateFlatEntityMaps({
workspaceId,
flatEntities: ['flatFieldMetadataMaps'],
});
return updatedFieldMetadata;
} catch (error) {
if (queryRunner.isTransactionActive) {
@@ -580,6 +588,11 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
workspaceId,
);
await this.flatEntityMapsCacheService.invalidateFlatEntityMaps({
workspaceId,
flatEntities: ['flatObjectMetadataMaps', 'flatFieldMetadataMaps'],
});
return fieldMetadata;
} catch (error) {
if (queryRunner.isTransactionActive) {
@@ -771,6 +784,11 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
workspaceId,
);
await this.flatEntityMapsCacheService.invalidateFlatEntityMaps({
workspaceId,
flatEntities: ['flatObjectMetadataMaps', 'flatFieldMetadataMaps'],
});
return createdFieldMetadatas;
} catch (error) {
if (queryRunner.isTransactionActive) {
@@ -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 ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-87a5-48f8-bbf7-ade388825a57',
flatRelationTargetFieldMetadata: null,
}),
fullPath: getFlatFieldMetadataMock({
id: '38207e43-a958-4058-bc32-36f838d102d3',
@@ -57,7 +55,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-0d19-453d-8e8d-fbcda8ca3747',
flatRelationTargetFieldMetadata: null,
}),
type: getFlatFieldMetadataMock({
id: '840360e7-efa6-4ca2-a0d6-113b79474b98',
@@ -82,7 +79,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-a417-49b8-a40b-f6a7874caa0d',
flatRelationTargetFieldMetadata: null,
}),
id: getFlatFieldMetadataMock({
id: '8662ced6-5e48-4576-993f-1be479dba176',
@@ -107,7 +103,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-eda0-4cee-9577-3eb357e3c22b',
flatRelationTargetFieldMetadata: null,
}),
createdAt: getFlatFieldMetadataMock({
id: '367923d5-658b-4b7b-9381-6f8e6cf84c85',
@@ -132,7 +127,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-66ac-4502-9975-e4d959c50311',
flatRelationTargetFieldMetadata: null,
}),
updatedAt: getFlatFieldMetadataMock({
id: 'b81f8f1b-4173-4176-bc3c-fe1b6a45a0dc',
@@ -157,7 +151,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-d767-4622-bdcf-d8a084834d86',
flatRelationTargetFieldMetadata: null,
}),
deletedAt: getFlatFieldMetadataMock({
id: 'eab57da6-41ae-45e8-a5ee-014cfcab450f',
@@ -182,7 +175,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: null,
relationTargetObjectMetadataId: null,
universalIdentifier: '20202020-b9a7-48d8-8387-b9a3090a50ec',
flatRelationTargetFieldMetadata: null,
}),
author: getFlatFieldMetadataMock({
id: '99724bb6-7a84-4b54-9b3f-dab730ab445a',
@@ -211,30 +203,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '958b82d0-a290-4e10-898d-3d858fbf684f',
relationTargetObjectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
universalIdentifier: '20202020-6501-4ac5-a4ef-b2f8522ef6cd',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '958b82d0-a290-4e10-898d-3d858fbf684f',
standardId: '20202020-000f-4947-917f-1b09851024fe',
objectMetadataId: '7d8264db-2b55-4b74-81ff-b7064ed43840',
type: FieldMetadataType.RELATION,
name: 'authoredAttachments',
label: 'Authored attachments',
defaultValue: null,
description: 'Attachments created by the workspace member',
icon: 'IconFileImport',
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: '99724bb6-7a84-4b54-9b3f-dab730ab445a',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-000f-4947-917f-1b09851024fe',
}),
}),
task: getFlatFieldMetadataMock({
id: 'bd823f17-f923-4f0d-8533-51d7bc062975',
@@ -263,30 +231,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '00fd339a-6431-465d-9524-09b5c804f497',
relationTargetObjectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
universalIdentifier: '20202020-51e5-4621-9cf8-215487951c4b',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '00fd339a-6431-465d-9524-09b5c804f497',
standardId: '20202020-794d-4783-a8ff-cecdb15be139',
objectMetadataId: '3186920d-2a15-4b5f-96c7-2bf6567024b0',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Task attachments',
icon: 'IconFileImport',
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: 'bd823f17-f923-4f0d-8533-51d7bc062975',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-794d-4783-a8ff-cecdb15be139',
}),
}),
note: getFlatFieldMetadataMock({
id: '5a98eb2b-1120-42e3-afd3-09d7da642fba',
@@ -315,30 +259,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '4d4b3225-ddd2-4d76-a4d6-bcdd43a256e8',
relationTargetObjectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
universalIdentifier: '20202020-4f4b-4503-a6fc-6b982f3dffb5',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '4d4b3225-ddd2-4d76-a4d6-bcdd43a256e8',
standardId: '20202020-4986-4c92-bf19-39934b149b16',
objectMetadataId: '1253e3e5-5b00-4a34-93b8-02f3dc6e2b7c',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Note attachments',
icon: 'IconFileImport',
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: '5a98eb2b-1120-42e3-afd3-09d7da642fba',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-4986-4c92-bf19-39934b149b16',
}),
}),
person: getFlatFieldMetadataMock({
id: '6938c2ec-ebcc-4f30-8d38-2c9c40228c53',
@@ -367,30 +287,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '367ad117-de09-466c-94f8-ce99d951b5ce',
relationTargetObjectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
universalIdentifier: '20202020-0158-4aa2-965c-5cdafe21ffa2',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '367ad117-de09-466c-94f8-ce99d951b5ce',
standardId: '20202020-cd97-451f-87fa-bcb789bdbf3a',
objectMetadataId: '843e0b67-9619-4628-91c4-2fa62256a611',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments linked to the contact.',
icon: 'IconFileImport',
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: '6938c2ec-ebcc-4f30-8d38-2c9c40228c53',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-cd97-451f-87fa-bcb789bdbf3a',
}),
}),
company: getFlatFieldMetadataMock({
id: '0bacf73b-f45b-4683-85b4-3e812e6228bf',
@@ -419,30 +315,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '44a572c5-d620-47f5-943a-346ae967e99e',
relationTargetObjectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
universalIdentifier: '20202020-ceab-4a28-b546-73b06b4c08d5',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '44a572c5-d620-47f5-943a-346ae967e99e',
standardId: '20202020-c1b5-4120-b0f0-987ca401ed53',
objectMetadataId: '7f5c2c7a-bb23-46fb-b59d-9b7a52a8d1cc',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments linked to the company',
icon: 'IconFileImport',
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: '0bacf73b-f45b-4683-85b4-3e812e6228bf',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-c1b5-4120-b0f0-987ca401ed53',
}),
}),
opportunity: getFlatFieldMetadataMock({
id: 'da72fbe2-a5aa-42b5-b6bd-482a3919eb20',
@@ -471,30 +343,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '16515578-a6ce-48af-a303-2005bb8492f0',
relationTargetObjectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
universalIdentifier: '20202020-7374-499d-bea3-9354890755b5',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '16515578-a6ce-48af-a303-2005bb8492f0',
standardId: '20202020-87c7-4118-83d6-2f4031005209',
objectMetadataId: 'e6996bbf-dd41-423a-9324-8546f5b22fa7',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments linked to the opportunity',
icon: 'IconFileImport',
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: 'da72fbe2-a5aa-42b5-b6bd-482a3919eb20',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-87c7-4118-83d6-2f4031005209',
}),
}),
rocket: getFlatFieldMetadataMock({
id: 'ba23019c-7f25-42c3-8138-622e61c42968',
@@ -523,30 +371,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: 'f5984acf-5128-42ac-840f-9d2888423699',
relationTargetObjectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
universalIdentifier: '20202020-ca2d-47c0-8253-9d0b662fb01a',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: 'f5984acf-5128-42ac-840f-9d2888423699',
standardId: '20202020-8d59-46ca-b7b2-73d167712134',
objectMetadataId: 'd78ec657-74a4-4652-a350-1f44ff62970a',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments tied to the Rocket',
icon: 'IconFileImport',
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: 'ba23019c-7f25-42c3-8138-622e61c42968',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-8d59-46ca-b7b2-73d167712134',
}),
}),
pet: getFlatFieldMetadataMock({
id: '317a33ef-117e-4953-86d4-c4a9670a2ce3',
@@ -575,30 +399,6 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '231903d0-3b14-47ed-9a88-fbf11031c451',
relationTargetObjectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
universalIdentifier: '20202020-b715-4658-8b6a-5359824dbddd',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '231903d0-3b14-47ed-9a88-fbf11031c451',
standardId: '20202020-8d59-46ca-b7b2-73d167712134',
objectMetadataId: 'd34e0f07-1b8c-4de0-938e-599cf05e1f7f',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments tied to the Pet',
icon: 'IconFileImport',
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: '317a33ef-117e-4953-86d4-c4a9670a2ce3',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-8d59-46ca-b7b2-73d167712134',
}),
}),
surveyResult: getFlatFieldMetadataMock({
id: 'a09463e6-5e56-4965-bc8a-2faa23a64672',
@@ -627,29 +427,5 @@ export const ATTACHMENT_FLAT_FIELDS_MOCK = {
relationTargetFieldMetadataId: '3347ffcc-43d0-4697-a9ce-6fb9b0e677e1',
relationTargetObjectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
universalIdentifier: '20202020-58b5-4f6c-8402-06b2bf3ea064',
flatRelationTargetFieldMetadata: getRelationTargetFlatFieldMetadataMock({
id: '3347ffcc-43d0-4697-a9ce-6fb9b0e677e1',
standardId: '20202020-8d59-46ca-b7b2-73d167712134',
objectMetadataId: '713da753-0340-49b5-b1fa-add34d2dc9a8',
type: FieldMetadataType.RELATION,
name: 'attachments',
label: 'Attachments',
defaultValue: null,
description: 'Attachments tied to the Survey result',
icon: 'IconFileImport',
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: 'a09463e6-5e56-4965-bc8a-2faa23a64672',
relationTargetObjectMetadataId: '819ed5ff-312f-4423-8e95-02a691cf5c27',
universalIdentifier: '20202020-8d59-46ca-b7b2-73d167712134',
}),
}),
} as const satisfies Record<string, FlatFieldMetadata>;
@@ -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: 'Contacts 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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -40,9 +40,8 @@ export const getFlatFieldMetadataMock = <T extends FieldMetadataType>(
standardId: null,
standardOverrides: null,
workspaceId: faker.string.uuid(),
flatRelationTargetFieldMetadata: null,
relationTargetFieldMetadataId: null,
flatRelationTargetObjectMetadata: null,
relationTargetObjectMetadataId: null,
...overrides,
};
@@ -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<MorphOrRelationFieldMetadataType> => {
const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date;
return {
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -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<string, FlatFieldMetadata>;
@@ -89,159 +89,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": null,
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": null,
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": null,
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconCat",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Pets",
"labelSingular": "Pet",
"namePlural": "pets",
"nameSingular": "pet",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "newFieldLabel",
"morphId": Any<String>,
"name": "newFieldPets",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"relationType": "ONE_TO_MANY",
},
"standardId": null,
"standardOverrides": null,
"type": "MORPH_RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A rocket",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconRocket",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Rockets",
"labelSingular": "Rocket",
"namePlural": "rockets",
"nameSingular": "rocket",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconPet",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "Pet",
"morphId": null,
"name": "pet",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"joinColumnName": "petId",
"onDelete": "SET_NULL",
"relationType": "MANY_TO_ONE",
},
"standardId": null,
"standardOverrides": null,
"type": "RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": null,
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconCat",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Pets",
"labelSingular": "Pet",
"namePlural": "pets",
"nameSingular": "pet",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
@@ -272,97 +119,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": null,
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": null,
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": null,
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconCat",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Pets",
"labelSingular": "Pet",
"namePlural": "pets",
"nameSingular": "pet",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "newFieldLabel",
"morphId": Any<String>,
"name": "newFieldPets",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"relationType": "ONE_TO_MANY",
},
"standardId": null,
"standardOverrides": null,
"type": "MORPH_RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A rocket",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconRocket",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Rockets",
"labelSingular": "Rocket",
"namePlural": "rockets",
"nameSingular": "rocket",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconPet",
"id": Any<String>,
"isActive": true,
@@ -395,159 +151,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": null,
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": null,
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A company",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconBuildingSkyscraper",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": false,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Companies",
"labelSingular": "Company",
"namePlural": "companies",
"nameSingular": "company",
"shortcut": "C",
"standardId": Any<String>,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "newFieldLabel",
"morphId": Any<String>,
"name": "newFieldCompanies",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"relationType": "ONE_TO_MANY",
},
"standardId": null,
"standardOverrides": null,
"type": "MORPH_RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A rocket",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconRocket",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Rockets",
"labelSingular": "Rocket",
"namePlural": "rockets",
"nameSingular": "rocket",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconBuilding",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "Company",
"morphId": null,
"name": "company",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"joinColumnName": "companyId",
"onDelete": "SET_NULL",
"relationType": "MANY_TO_ONE",
},
"standardId": null,
"standardOverrides": null,
"type": "RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A company",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconBuildingSkyscraper",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": false,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Companies",
"labelSingular": "Company",
"namePlural": "companies",
"nameSingular": "company",
"shortcut": "C",
"standardId": Any<String>,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
@@ -578,97 +181,6 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": null,
"flatRelationTargetFieldMetadata": {
"createdAt": Any<ClockDate>,
"defaultValue": null,
"description": "new field description",
"flatRelationTargetFieldMetadata": null,
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A company",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconBuildingSkyscraper",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": false,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Companies",
"labelSingular": "Company",
"namePlural": "companies",
"nameSingular": "company",
"shortcut": "C",
"standardId": Any<String>,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconRelationOneToMany",
"id": Any<String>,
"isActive": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isNullable": true,
"isSystem": false,
"isUIReadOnly": false,
"isUnique": null,
"label": "newFieldLabel",
"morphId": Any<String>,
"name": "newFieldCompanies",
"objectMetadataId": Any<String>,
"options": null,
"relationTargetFieldMetadataId": Any<String>,
"relationTargetObjectMetadataId": Any<String>,
"settings": {
"relationType": "ONE_TO_MANY",
},
"standardId": null,
"standardOverrides": null,
"type": "MORPH_RELATION",
"universalIdentifier": Any<String>,
"updatedAt": Any<ClockDate>,
"workspaceId": Any<String>,
},
"flatRelationTargetObjectMetadata": {
"applicationId": null,
"createdAt": Any<String>,
"description": "A rocket",
"duplicateCriteria": null,
"flatFieldMetadatas": [],
"icon": "IconRocket",
"id": Any<String>,
"imageIdentifierFieldMetadataId": null,
"isActive": true,
"isAuditLogged": true,
"isCustom": true,
"isLabelSyncedWithName": false,
"isRemote": false,
"isSearchable": true,
"isSystem": false,
"isUIReadOnly": false,
"labelIdentifierFieldMetadataId": Any<String>,
"labelPlural": "Rockets",
"labelSingular": "Rocket",
"namePlural": "rockets",
"nameSingular": "rocket",
"shortcut": null,
"standardId": null,
"standardOverrides": null,
"targetTableName": "DEPRECATED",
"universalIdentifier": Any<String>,
"updatedAt": Any<String>,
"workspaceId": Any<String>,
},
"icon": "IconBuilding",
"id": Any<String>,
"isActive": true,
@@ -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<Pick<CreateFieldInput, 'morphRelationsCreationPayload'>>;
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',
},
@@ -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],
@@ -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<T>): Promise<
}: ValidateOneFieldMetadataArgs<T> & { workspaceId: string }): Promise<
FlatFieldMetadataValidationError[]
> {
const fieldMetadataTypeValidator =
@@ -187,10 +198,11 @@ export class FlatFieldMetadataTypeValidatorService {
}
return await fieldMetadataTypeValidator({
existingFlatObjectMetadataMaps,
dependencyOptimisticFlatEntityMaps,
flatFieldMetadataToValidate,
optimisticFlatFieldMetadataMaps,
remainingFlatEntityMapsToValidate,
workspaceId,
otherFlatObjectMetadataMapsToValidate,
});
}
}
@@ -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<FlatFieldMetadata>
> {
constructor(
@InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
cacheStorageService: CacheStorageService,
@InjectRepository(FieldMetadataEntity)
private readonly fieldMetadataRepository: Repository<FieldMetadataEntity>,
) {
super(cacheStorageService);
}
protected async computeFlatMap({
workspaceId,
}: {
workspaceId: string;
}): Promise<FlatEntityMaps<FlatFieldMetadata>> {
const fieldMetadatas = await this.fieldMetadataRepository.find({
where: {
workspaceId,
},
withDeleted: true,
relations: [],
});
const flatFieldMetadataMaps = fieldMetadatas.reduce<
FlatEntityMaps<FlatFieldMetadata>
>((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;
}
}
@@ -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<P>,
args: ValidateOneFieldMetadataArgs<P> & { workspaceId: string },
) =>
| FlatFieldMetadataValidationError[]
| Promise<FlatFieldMetadataValidationError[]>;
@@ -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<T extends FieldMetadataType = FieldMetadataType> =
Omit<FieldMetadataEntity<T>, FieldMetadataEntityRelationProperties> & {
universalIdentifier: string;
flatRelationTargetFieldMetadata: AssignTypeIfIsMorphOrRelationFieldMetadataType<
Omit<
FlatFieldMetadata<MorphOrRelationFieldMetadataType>,
'flatRelationTargetFieldMetadata' | 'flatRelationTargetObjectMetadata'
>,
T
>;
flatRelationTargetObjectMetadata: AssignTypeIfIsMorphOrRelationFieldMetadataType<
FlatObjectMetadataWithoutFields,
T
>;
// Could add indexField metadatas and so on ?
};
@@ -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'];
@@ -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>;
}): 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,
});
}
@@ -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: FlatFieldMetadata<FieldMetadataType.MORPH_RELATION>;
flatObjectMetadata: FlatObjectMetadata;
};
export const findAllOthersMorphRelationFlatFieldMetadatasOrThrow = ({
flatObjectMetadataMaps,
flatFieldMetadataMaps,
flatObjectMetadata,
flatFieldMetadata: morphRelationFlatFieldMetadata,
}: FindAllMorphRelationFlatFieldMetadatasOrThrowArgs): FlatFieldMetadata<FieldMetadataType.MORPH_RELATION>[] => {
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<FieldMetadataType.MORPH_RELATION> =>
@@ -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: FlatFieldMetadata<FieldMetadataType.MORPH_RELATION>;
flatObjectMetadata: FlatObjectMetadata;
};
export const findFlatFieldMetadatasRelatedToMorphRelationOrThrow = ({
flatObjectMetadataMaps,
flatFieldMetadataMaps,
flatFieldMetadata: morphRelationFlatFieldMetadata,
flatObjectMetadata,
}: FindFlatFieldMetadatasRelatedToMorphRelationOrThrowArgs): FlatFieldMetadata<MorphOrRelationFieldMetadataType>[] => {
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) {
@@ -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<FlatFieldMetadata>;
flatObjectMetadata: FlatObjectMetadata;
};
export const findObjectFieldsInFlatFieldMetadataMapsOrThrow = ({
flatFieldMetadataMaps,
flatObjectMetadata,
}: FindObjectFieldsInFlatFieldMetadataMapsArgs): {
objectFlatFieldMetadataById: FlatEntityMaps<FlatFieldMetadata>;
objectFlatFieldMetadatas: FlatFieldMetadata[];
} => {
const objectFlatFieldMetadataById = getSubFlatEntityMapsOrThrow({
flatEntityIds: flatObjectMetadata.fieldMetadataIds,
flatEntityMaps: flatFieldMetadataMaps,
});
const objectFlatFieldMetadatas = Object.values(
objectFlatFieldMetadataById.byId,
).filter(isDefined);
return {
objectFlatFieldMetadataById,
objectFlatFieldMetadatas,
};
};
@@ -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: FlatFieldMetadata<MorphOrRelationFieldMetadataType>;
};
export const findRelationFlatFieldMetadataTargetFlatFieldMetadataOrThrow = ({
flatObjectMetadataMaps,
flatFieldMetadataMaps,
flatFieldMetadata,
}: GetRelationFlatFieldMetadatasUtilArgs): FlatFieldMetadata<MorphOrRelationFieldMetadataType> => {
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(
@@ -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;
}
};
@@ -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<CreateFieldInput, 'workspaceId'>;
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
export type FromCreateFieldInputToFlatObjectMetadataArgs = {
createFieldInput: Omit<CreateFieldInput, 'workspaceId'>;
workspaceId: string;
};
} & Pick<AllFlatEntityMaps, 'flatObjectMetadataMaps'>;
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,
@@ -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<FlatIndexMetadata>;
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 {
@@ -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<RelationAndMorphRelationFieldMetadataType>,
): 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<T>,
// 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,
};
};
@@ -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,
@@ -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<string, FlatFieldMetadata> = {};
const fieldsById = flatObjectMetadata.flatFieldMetadatas.reduce(
(acc, flatFieldMetadata) => ({
...acc,
[flatFieldMetadata.id]: flatFieldMetadata,
}),
initialAccumulator,
);
const { fieldIdByJoinColumnName, fieldIdByName } =
objectMetadataItemWithFieldMaps;
return {
...flatObjectMetadata,
fieldsById,
fieldIdByJoinColumnName,
fieldIdByName,
};
};
@@ -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<MorphOrRelationFieldMetadataType>;
}) => ({
type: flatFieldMetadata.settings.relationType,
targetFlatObjectMetadata: FlatObjectMetadata;
sourceFlatFieldMetadata: FlatFieldMetadata<MorphOrRelationFieldMetadataType>;
targetFlatFieldMetadata: FlatFieldMetadata<MorphOrRelationFieldMetadataType>;
};
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,
),
});
@@ -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<CreateFieldInput, 'workspaceId'> & {
type: FieldMetadataType.MORPH_RELATION;
};
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
existingFlatObjectMetadataMaps: FlatEntityMaps<FlatObjectMetadata>;
sourceFlatObjectMetadata: FlatObjectMetadata;
workspaceId: string;
};
@@ -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<CreateFieldInput, 'workspaceId'> & {
type: FieldMetadataType.RELATION;
};
existingFlatObjectMetadataMaps: FlatObjectMetadataMaps;
existingFlatObjectMetadataMaps: FlatEntityMaps<FlatObjectMetadata>;
sourceFlatObjectMetadata: FlatObjectMetadata;
workspaceId: string;
};
@@ -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<AllFlatEntityMaps, 'flatIndexMaps' | 'flatObjectMetadataMaps'>;
} & Pick<
AllFlatEntityMaps,
'flatIndexMaps' | 'flatObjectMetadataMaps' | 'flatFieldMetadataMaps'
>;
const applyUpdatesToFlatFieldMetadata = ({
updatedEditableFieldProperties,
fromFlatFieldMetadata,
flatObjectMetadataMaps,
flatIndexMaps,
flatFieldMetadataMaps,
}: ApplyUpdatesToFlatFieldMetadataArgs) => {
return FLAT_FIELD_METADATA_EDITABLE_PROPERTIES.reduce<UpdatedFlatFieldMetadataAndIndexToUpdate>(
({ 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<AllFlatEntityMaps, 'flatObjectMetadataMaps' | 'flatIndexMaps'>;
} & 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<FlatFieldMetadataAndIndexToUpdate> => {
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,
});
@@ -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],
};
};
@@ -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,
@@ -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<FlatFieldMetadata, 'name'>;
} & Pick<AllFlatEntityMaps, 'flatIndexMaps'>;
} & Pick<AllFlatEntityMaps, 'flatIndexMaps' | 'flatFieldMetadataMaps'>;
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<FlatIndexMetadata>((flatIndex) => {
const newIndex = generateFlatIndexMetadataWithNameOrThrow({
flatObjectMetadata: optimisticFlatObjectMetadata,
flatIndex,
flatObjectMetadata,
objectFlatFieldMetadatas: optimisticObjectFlatFieldMetadatas,
});
return newIndex;
@@ -24,6 +24,7 @@ export const throwOnFieldInputTranspilationsError: ThrowOnFieldInputTranspilatio
throw new WorkspaceMigrationBuilderExceptionV2(
{
report: {
fieldMetadata: [],
index: [],
view: [],
viewField: [],
@@ -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) => {
@@ -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<FlatFieldMetadata>;
remainingFlatEntityMapsToValidate?: FlatEntityMaps<FlatFieldMetadata>;
}): 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({
@@ -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<MorphOrRelationFieldMetadataType>): 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,
});
}
@@ -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<FlatObjectMetadata>;
objectMetadataId: string;
};
export const validateMorphRelationCreationPayload = async ({
@@ -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<FlatObjectMetadata>;
};
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,
},
};
};
@@ -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);
};
@@ -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: {},
});
};
@@ -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;
@@ -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);
@@ -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,
]);
@@ -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<Record<string, FlatObjectMetadataWithFlatFieldMaps>>;
idByNameSingular: Partial<Record<string, string>>;
idByUniversalIdentifier: Record<string, string>;
};
@@ -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<Record<string, FlatFieldMetadata>>;
fieldIdByJoinColumnName: Partial<Record<string, string>>;
fieldIdByName: Partial<Record<string, string>>;
};
export type FlatObjectMetadataWithFlatFieldMaps = FlatObjectMetadata &
FlatFieldMetadataMaps;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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"`;
@@ -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<AddFlatFieldMetadataInFlatObjectMetadataMapsOrThrowArgsTestCase>[] =
[
{
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,
});
}
},
);
});
@@ -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<AddFlatFieldMetadataInFlatObjectMetadataMapsArgsTestCase>[] =
[
{
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();
},
);
});
@@ -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<AddFlatObjectMetadataToFlatObjectMetadataMapsTestCase>[] =
[
{
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);
}
},
);
});
@@ -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<DeleteFieldFromFlatObjectMetadataMapsTestCase>[] =
[
{
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);
}
},
);
});
@@ -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<DeleteObjectFromFlatObjectMetadataMapsTestCase>[] =
[
{
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);
}
},
);
});
@@ -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<FindFlatFieldMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
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);
},
);
});
@@ -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<FindFlatObjectMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
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);
},
);
});
@@ -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<GetSubObjectMetadataMapsOrThrowTestCase>[] =
[
{
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);
}
},
);
});
@@ -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<GetSubObjectMetadataMapsOrThrowTestCase>[] =
[
{
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);
}
},
);
});
@@ -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<GetSubFlatObjectMetadataMapsTestCase>[] =
[
{
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();
},
);
});
@@ -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<GetSubFlatObjectMetadataMapsTestCase>[] =
[
{
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();
},
);
});
@@ -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<ReplaceFlatFieldMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
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,
});
}
},
);
});
@@ -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<ReplaceFlatObjectMetadataInFlatObjectMetadataMapsTestCase>[] =
[
{
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,
});
}
},
);
});
@@ -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 },
};
};
@@ -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;
}
};
@@ -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,
],
};
};
@@ -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,
},
};
};
@@ -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,
},
};
};
@@ -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,
};
};
@@ -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,
),
};
};
@@ -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),
};
};

Some files were not shown because too many files have changed in this diff Show More