diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema.factory.ts index 6f8c8258acf..20d762cf340 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema.factory.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, Logger } from '@nestjs/common'; import { makeExecutableSchema } from '@graphql-tools/schema'; import { GraphQLSchema, printSchema } from 'graphql'; @@ -27,6 +27,8 @@ import { TWENTY_STANDARD_APPLICATION } from 'src/engine/workspace-manager/twenty @Injectable() export class WorkspaceSchemaFactory { + private readonly logger = new Logger(WorkspaceSchemaFactory.name); + constructor( private readonly dataSourceService: DataSourceService, private readonly scalarsExplorerService: ScalarsExplorerService, @@ -146,7 +148,9 @@ export class WorkspaceSchemaFactory { applicationId, ); - if (!typeDefs || !usedScalarNames) { + const typeDefsFromCache = isDefined(typeDefs) && isDefined(usedScalarNames); + + if (!typeDefsFromCache) { const autoGeneratedSchema = await this.workspaceGraphQLSchemaGenerator.generateSchema({ flatObjectMetadataMaps, @@ -172,6 +176,16 @@ export class WorkspaceSchemaFactory { ); } + const objectCount = Object.keys( + flatObjectMetadataMaps.byUniversalIdentifier, + ).length; + + this.logger.log( + `Building schema for workspace ${workspace.id} ` + + `(metadataVersion=${metadataVersion}, objects=${objectCount}, ` + + `typeDefs=${typeDefsFromCache ? 'cached' : 'generated'})`, + ); + const autoGeneratedResolvers = await this.workspaceResolverFactory.create( flatObjectMetadataMaps, flatFieldMetadataMaps,