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 1764abb20..3d6ee8c0e 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 1ea26d2d3..462581251 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 3ee27f189..cdac0476a 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 82b664625..6886b4250 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 e55531dbd..c00a0f3cd 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 8faa3dc5f..e9762d3f5 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 7489e9a25..690aef387 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 df649126e..2e822ebac 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 d18f463fa..cb632adae 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 2eec06c47..a6163368b 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 a0014a2d5..ad482bd05 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 db968548b..68438bf12 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 d1f94d54a..c75a19b1d 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 d3a41cbc7..2f132b7c8 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 66bd291a0..b032f319e 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 7b1e2ce97..2a814be31 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 48e9c20d8..aa62fda1e 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 052bb1044..77ca640c3 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 3bd5fe56d..5b29bbb44 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 4ffa99971..716815670 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 c97182817..a54b04915 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 0e10642d4..12f175a00 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 72a6abd92..8437c5e46 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 2d5f1bb4e..8eed6fb20 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 c5908bfba..3009bc9b3 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[]; }