From 8893cbc05d5d858791a05863caf0a38ec43745f0 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Sun, 14 Jan 2024 00:21:21 +0100 Subject: [PATCH] Stop switching to a different datasource per workspace (#3425) * Stop switching to a different datasource per workspace * Add console * Remove call to metadata --- .../src/database/typeorm/typeorm.service.ts | 46 +++++++++++-------- .../workspace-migration-runner.service.ts | 1 + .../factories/create-many-query.factory.ts | 1 + .../factories/delete-many-query.factory.ts | 1 + .../factories/delete-one-query.factory.ts | 1 + .../factories/fields-string.factory.ts | 6 +++ .../factories/find-many-query.factory.ts | 1 + .../factories/find-one-query.factory.ts | 1 + .../factories/relation-field-alias.factory.ts | 32 +++++++------ .../factories/update-many-query.factory.ts | 1 + .../factories/update-one-query.factory.ts | 1 + ...rkspace-query-builder-options.interface.ts | 2 + .../query-runner-optionts.interface.ts | 2 + .../workspace-query-runner.service.ts | 6 +++ .../factories/create-many-resolver.factory.ts | 1 + .../factories/create-one-resolver.factory.ts | 1 + .../factories/delete-many-resolver.factory.ts | 1 + .../factories/delete-one-resolver.factory.ts | 1 + ...te-quick-action-on-one-resolver.factory.ts | 1 + .../factories/find-many-resolver.factory.ts | 1 + .../factories/find-one-resolver.factory.ts | 1 + .../factories/update-many-resolver.factory.ts | 1 + .../factories/update-one-resolver.factory.ts | 1 + .../workspace-resolver.factory.ts | 2 + ...kspace-schema-builder-context.interface.ts | 2 + 25 files changed, 83 insertions(+), 32 deletions(-) diff --git a/packages/twenty-server/src/database/typeorm/typeorm.service.ts b/packages/twenty-server/src/database/typeorm/typeorm.service.ts index 1764abb205..3d6ee8c0e1 100644 --- a/packages/twenty-server/src/database/typeorm/typeorm.service.ts +++ b/packages/twenty-server/src/database/typeorm/typeorm.service.ts @@ -37,27 +37,35 @@ export class TypeORMService implements OnModuleInit, OnModuleDestroy { public async connectToDataSource( dataSource: DataSourceEntity, ): Promise { - // Wait for a bit before trying again if another initialization is in progress - while (this.isDatasourceInitializing.get(dataSource.id)) { - await new Promise((resolve) => setTimeout(resolve, 10)); + const isMultiDatasourceEnabled = false; + + console.log('Data sources number', this.dataSources.size); + + if (isMultiDatasourceEnabled) { + // Wait for a bit before trying again if another initialization is in progress + while (this.isDatasourceInitializing.get(dataSource.id)) { + await new Promise((resolve) => setTimeout(resolve, 10)); + } + + if (this.dataSources.has(dataSource.id)) { + return this.dataSources.get(dataSource.id); + } + + this.isDatasourceInitializing.set(dataSource.id, true); + + try { + const dataSourceInstance = + await this.createAndInitializeDataSource(dataSource); + + this.dataSources.set(dataSource.id, dataSourceInstance); + + return dataSourceInstance; + } finally { + this.isDatasourceInitializing.delete(dataSource.id); + } } - if (this.dataSources.has(dataSource.id)) { - return this.dataSources.get(dataSource.id); - } - - this.isDatasourceInitializing.set(dataSource.id, true); - - try { - const dataSourceInstance = - await this.createAndInitializeDataSource(dataSource); - - this.dataSources.set(dataSource.id, dataSourceInstance); - - return dataSourceInstance; - } finally { - this.isDatasourceInitializing.delete(dataSource.id); - } + return this.mainDataSource; } private async createAndInitializeDataSource( diff --git a/packages/twenty-server/src/workspace/workspace-migration-runner/workspace-migration-runner.service.ts b/packages/twenty-server/src/workspace/workspace-migration-runner/workspace-migration-runner.service.ts index 1ea26d2d33..4625812510 100644 --- a/packages/twenty-server/src/workspace/workspace-migration-runner/workspace-migration-runner.service.ts +++ b/packages/twenty-server/src/workspace/workspace-migration-runner/workspace-migration-runner.service.ts @@ -298,6 +298,7 @@ export class WorkspaceMigrationRunnerService { columnNames: [migrationColumn.columnName], referencedColumnNames: [migrationColumn.referencedTableColumnName], referencedTableName: migrationColumn.referencedTableName, + referencedSchema: schemaName, onDelete: 'CASCADE', }), ); diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/create-many-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/create-many-query.factory.ts index 3ee27f1897..cdac0476ab 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/create-many-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/create-many-query.factory.ts @@ -27,6 +27,7 @@ export class CreateManyQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); const computedArgs = this.argsAliasFactory.create( args, diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-many-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-many-query.factory.ts index 82b664625a..6886b42504 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-many-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-many-query.factory.ts @@ -18,6 +18,7 @@ export class DeleteManyQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); return ` diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-one-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-one-query.factory.ts index e55531dbd0..c00a0f3cdc 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-one-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/delete-one-query.factory.ts @@ -18,6 +18,7 @@ export class DeleteOneQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); return ` diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/fields-string.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/fields-string.factory.ts index 8faa3dc5f5..e9762d3f54 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/fields-string.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/fields-string.factory.ts @@ -5,6 +5,7 @@ import graphqlFields from 'graphql-fields'; import isEmpty from 'lodash.isempty'; import { FieldMetadataInterface } from 'src/metadata/field-metadata/interfaces/field-metadata.interface'; +import { ObjectMetadataInterface } from 'src/metadata/field-metadata/interfaces/object-metadata.interface'; import { isRelationFieldMetadataType } from 'src/workspace/utils/is-relation-field-metadata-type.util'; @@ -23,6 +24,7 @@ export class FieldsStringFactory { create( info: GraphQLResolveInfo, fieldMetadataCollection: FieldMetadataInterface[], + objectMetadataCollection: ObjectMetadataInterface[], ): Promise { const selectedFields: Record = graphqlFields(info); @@ -30,6 +32,7 @@ export class FieldsStringFactory { info, selectedFields, fieldMetadataCollection, + objectMetadataCollection, ); } @@ -37,6 +40,7 @@ export class FieldsStringFactory { info: GraphQLResolveInfo, selectedFields: Record, fieldMetadataCollection: FieldMetadataInterface[], + objectMetadataCollection: ObjectMetadataInterface[], accumulator = '', ): Promise { const fieldMetadataMap = new Map( @@ -58,6 +62,7 @@ export class FieldsStringFactory { fieldKey, fieldValue, fieldMetadata, + objectMetadataCollection, info, ); @@ -84,6 +89,7 @@ export class FieldsStringFactory { info, fieldValue, fieldMetadataCollection, + objectMetadataCollection, accumulator, ); accumulator += `}\n`; diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-many-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-many-query.factory.ts index 7489e9a256..690aef3872 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-many-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-many-query.factory.ts @@ -29,6 +29,7 @@ export class FindManyQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); const argsString = this.argsStringFactory.create( args, diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-one-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-one-query.factory.ts index df649126e8..2e822ebaca 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-one-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/find-one-query.factory.ts @@ -23,6 +23,7 @@ export class FindOneQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); const argsString = this.argsStringFactory.create( args, diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/relation-field-alias.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/relation-field-alias.factory.ts index d18f463fae..cb632adaeb 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/relation-field-alias.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/relation-field-alias.factory.ts @@ -3,6 +3,7 @@ import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common'; import { GraphQLResolveInfo } from 'graphql'; import { FieldMetadataInterface } from 'src/metadata/field-metadata/interfaces/field-metadata.interface'; +import { ObjectMetadataInterface } from 'src/metadata/field-metadata/interfaces/object-metadata.interface'; import { isRelationFieldMetadataType } from 'src/workspace/utils/is-relation-field-metadata-type.util'; import { RelationMetadataType } from 'src/metadata/relation-metadata/relation-metadata.entity'; @@ -31,19 +32,27 @@ export class RelationFieldAliasFactory { fieldKey: string, fieldValue: any, fieldMetadata: FieldMetadataInterface, + objectMetadataCollection: ObjectMetadataInterface[], info: GraphQLResolveInfo, ): Promise { if (!isRelationFieldMetadataType(fieldMetadata.type)) { throw new Error(`Field ${fieldMetadata.name} is not a relation field`); } - return this.createRelationAlias(fieldKey, fieldValue, fieldMetadata, info); + return this.createRelationAlias( + fieldKey, + fieldValue, + fieldMetadata, + objectMetadataCollection, + info, + ); } private async createRelationAlias( fieldKey: string, fieldValue: any, fieldMetadata: FieldMetadataInterface, + objectMetadataCollection: ObjectMetadataInterface[], info: GraphQLResolveInfo, ): Promise { const relationMetadata = @@ -67,18 +76,13 @@ export class RelationFieldAliasFactory { ); // Retrieve the referenced object metadata based on the relation direction // Mandatory to handle n+n relations - const referencedObjectMetadata = - await this.objectMetadataService.findOneWithinWorkspace( - fieldMetadata.workspaceId, - { - where: { - id: - relationDirection == RelationDirection.TO - ? relationMetadata.fromObjectMetadataId - : relationMetadata.toObjectMetadataId, - }, - }, - ); + const referencedObjectMetadata = objectMetadataCollection.find( + (objectMetadata) => + objectMetadata.id === + (relationDirection == RelationDirection.TO + ? relationMetadata.fromObjectMetadataId + : relationMetadata.toObjectMetadataId), + ); if (!referencedObjectMetadata) { throw new Error( @@ -101,6 +105,7 @@ export class RelationFieldAliasFactory { info, fieldValue, referencedObjectMetadata.fields ?? [], + objectMetadataCollection, ); return ` @@ -129,6 +134,7 @@ export class RelationFieldAliasFactory { info, fieldValue, referencedObjectMetadata.fields ?? [], + objectMetadataCollection, ); // Otherwise it means it's a relation destination is of kind ONE diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-many-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-many-query.factory.ts index 2eec06c476..a6163368b1 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-many-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-many-query.factory.ts @@ -28,6 +28,7 @@ export class UpdateManyQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); const computedArgs = this.argsAliasFactory.create( diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-one-query.factory.ts b/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-one-query.factory.ts index a0014a2d5b..ad482bd055 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-one-query.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/factories/update-one-query.factory.ts @@ -25,6 +25,7 @@ export class UpdateOneQueryFactory { const fieldsString = await this.fieldsStringFactory.create( options.info, options.fieldMetadataCollection, + options.objectMetadataCollection, ); const computedArgs = this.argsAliasFactory.create( args, diff --git a/packages/twenty-server/src/workspace/workspace-query-builder/interfaces/workspace-query-builder-options.interface.ts b/packages/twenty-server/src/workspace/workspace-query-builder/interfaces/workspace-query-builder-options.interface.ts index db968548be..68438bf128 100644 --- a/packages/twenty-server/src/workspace/workspace-query-builder/interfaces/workspace-query-builder-options.interface.ts +++ b/packages/twenty-server/src/workspace/workspace-query-builder/interfaces/workspace-query-builder-options.interface.ts @@ -1,9 +1,11 @@ import { GraphQLResolveInfo } from 'graphql'; import { FieldMetadataInterface } from 'src/metadata/field-metadata/interfaces/field-metadata.interface'; +import { ObjectMetadataInterface } from 'src/metadata/field-metadata/interfaces/object-metadata.interface'; export interface WorkspaceQueryBuilderOptions { targetTableName: string; info: GraphQLResolveInfo; fieldMetadataCollection: FieldMetadataInterface[]; + objectMetadataCollection: ObjectMetadataInterface[]; } diff --git a/packages/twenty-server/src/workspace/workspace-query-runner/interfaces/query-runner-optionts.interface.ts b/packages/twenty-server/src/workspace/workspace-query-runner/interfaces/query-runner-optionts.interface.ts index d1f94d54a2..c75a19b1db 100644 --- a/packages/twenty-server/src/workspace/workspace-query-runner/interfaces/query-runner-optionts.interface.ts +++ b/packages/twenty-server/src/workspace/workspace-query-runner/interfaces/query-runner-optionts.interface.ts @@ -1,10 +1,12 @@ import { GraphQLResolveInfo } from 'graphql'; import { FieldMetadataInterface } from 'src/metadata/field-metadata/interfaces/field-metadata.interface'; +import { ObjectMetadataInterface } from 'src/metadata/field-metadata/interfaces/object-metadata.interface'; export interface WorkspaceQueryRunnerOptions { targetTableName: string; workspaceId: string; info: GraphQLResolveInfo; fieldMetadataCollection: FieldMetadataInterface[]; + objectMetadataCollection: ObjectMetadataInterface[]; } diff --git a/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts b/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts index d3a41cbc7d..2f132b7c8e 100644 --- a/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts +++ b/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts @@ -64,11 +64,17 @@ export class WorkspaceQueryRunnerService { ): Promise | undefined> { try { const { workspaceId, targetTableName } = options; + const start = performance.now(); + const query = await this.workspaceQueryBuilderFactory.findMany( args, options, ); + const result = await this.execute(query, workspaceId); + const end = performance.now(); + + console.log(`query time: ${end - start} ms`); return this.parseResult>(result, targetTableName, ''); } catch (exception) { diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-many-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-many-resolver.factory.ts index 66bd291a06..b032f319e9 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-many-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-many-resolver.factory.ts @@ -30,6 +30,7 @@ export class CreateManyResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-one-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-one-resolver.factory.ts index 7b1e2ce974..2a814be31a 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-one-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/create-one-resolver.factory.ts @@ -30,6 +30,7 @@ export class CreateOneResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-many-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-many-resolver.factory.ts index 48e9c20d8b..aa62fda1e9 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-many-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-many-resolver.factory.ts @@ -30,6 +30,7 @@ export class DeleteManyResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-one-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-one-resolver.factory.ts index 052bb1044b..77ca640c3e 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-one-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/delete-one-resolver.factory.ts @@ -30,6 +30,7 @@ export class DeleteOneResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/execute-quick-action-on-one-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/execute-quick-action-on-one-resolver.factory.ts index 3bd5fe56db..5b29bbb44a 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/execute-quick-action-on-one-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/execute-quick-action-on-one-resolver.factory.ts @@ -36,6 +36,7 @@ export class ExecuteQuickActionOnOneResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-many-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-many-resolver.factory.ts index 4ffa999710..7168156705 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-many-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-many-resolver.factory.ts @@ -30,6 +30,7 @@ export class FindManyResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-one-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-one-resolver.factory.ts index c97182817f..a54b04915e 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-one-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/find-one-resolver.factory.ts @@ -30,6 +30,7 @@ export class FindOneResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-many-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-many-resolver.factory.ts index 0e10642d44..12f175a00e 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-many-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-many-resolver.factory.ts @@ -30,6 +30,7 @@ export class UpdateManyResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-one-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-one-resolver.factory.ts index 72a6abd924..8437c5e46f 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-one-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/factories/update-one-resolver.factory.ts @@ -30,6 +30,7 @@ export class UpdateOneResolverFactory workspaceId: internalContext.workspaceId, info, fieldMetadataCollection: internalContext.fieldMetadataCollection, + objectMetadataCollection: internalContext.objectMetadataCollection, }); }; } diff --git a/packages/twenty-server/src/workspace/workspace-resolver-builder/workspace-resolver.factory.ts b/packages/twenty-server/src/workspace/workspace-resolver-builder/workspace-resolver.factory.ts index 2d5f1bb4ef..8eed6fb201 100644 --- a/packages/twenty-server/src/workspace/workspace-resolver-builder/workspace-resolver.factory.ts +++ b/packages/twenty-server/src/workspace/workspace-resolver-builder/workspace-resolver.factory.ts @@ -81,6 +81,7 @@ export class WorkspaceResolverFactory { workspaceId, targetTableName: objectMetadata.targetTableName, fieldMetadataCollection: objectMetadata.fields, + objectMetadataCollection: objectMetadataCollection, }); } @@ -103,6 +104,7 @@ export class WorkspaceResolverFactory { workspaceId, targetTableName: objectMetadata.targetTableName, fieldMetadataCollection: objectMetadata.fields, + objectMetadataCollection: objectMetadataCollection, }); } } diff --git a/packages/twenty-server/src/workspace/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface.ts b/packages/twenty-server/src/workspace/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface.ts index c5908bfba0..3009bc9b3c 100644 --- a/packages/twenty-server/src/workspace/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface.ts +++ b/packages/twenty-server/src/workspace/workspace-schema-builder/interfaces/workspace-schema-builder-context.interface.ts @@ -1,7 +1,9 @@ import { FieldMetadataInterface } from 'src/metadata/field-metadata/interfaces/field-metadata.interface'; +import { ObjectMetadataInterface } from 'src/metadata/field-metadata/interfaces/object-metadata.interface'; export interface WorkspaceSchemaBuilderContext { workspaceId: string; targetTableName: string; fieldMetadataCollection: FieldMetadataInterface[]; + objectMetadataCollection: ObjectMetadataInterface[]; }