Spaces:
Build error
Build error
| import { Injectable } from '@nestjs/common'; | |
| import { makeExecutableSchema } from '@graphql-tools/schema'; | |
| import { GraphQLSchema } from 'graphql'; | |
| import { gql } from 'graphql-tag'; | |
| import { isDefined } from 'twenty-shared/utils'; | |
| import { ScalarsExplorerService } from 'src/engine/api/graphql/services/scalars-explorer.service'; | |
| import { WorkspaceGraphqlSchemaSDLService } from 'src/engine/api/graphql/workspace-graphql-schema-sdl/workspace-graphql-schema-sdl.service'; | |
| import { workspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/factories/factories'; | |
| import { WorkspaceResolverFactory } from 'src/engine/api/graphql/workspace-resolver-builder/workspace-resolver.factory'; | |
| import { FlatWorkspace } from 'src/engine/core-modules/workspace/types/flat-workspace.type'; | |
| import { buildObjectIdByNameMaps } from 'src/engine/metadata-modules/flat-object-metadata/utils/build-object-id-by-name-maps.util'; | |
| () | |
| export class WorkspaceSchemaFactory { | |
| constructor( | |
| private readonly scalarsExplorerService: ScalarsExplorerService, | |
| private readonly workspaceResolverFactory: WorkspaceResolverFactory, | |
| private readonly workspaceGraphqlSchemaSDLService: WorkspaceGraphqlSchemaSDLService, | |
| ) {} | |
| async createGraphQLSchema( | |
| workspace: FlatWorkspace, | |
| applicationId?: string, | |
| ): Promise<GraphQLSchema> { | |
| const schemaSDLResult = | |
| await this.workspaceGraphqlSchemaSDLService.getOrComputeSchemaSDL( | |
| workspace, | |
| applicationId, | |
| ); | |
| if (!isDefined(schemaSDLResult)) { | |
| return new GraphQLSchema({}); | |
| } | |
| const { | |
| sdl, | |
| usedScalarNames, | |
| flatObjectMetadataMaps, | |
| flatFieldMetadataMaps, | |
| flatIndexMaps, | |
| } = schemaSDLResult; | |
| const { idByNameSingular } = buildObjectIdByNameMaps( | |
| flatObjectMetadataMaps, | |
| ); | |
| const autoGeneratedResolvers = await this.workspaceResolverFactory.create( | |
| flatObjectMetadataMaps, | |
| flatFieldMetadataMaps, | |
| flatIndexMaps, | |
| idByNameSingular, | |
| workspaceResolverBuilderMethodNames, | |
| ); | |
| const scalarsResolvers = | |
| this.scalarsExplorerService.getScalarResolvers(usedScalarNames); | |
| const executableSchema = makeExecutableSchema({ | |
| typeDefs: gql` | |
| ${sdl} | |
| `, | |
| resolvers: { | |
| ...scalarsResolvers, | |
| ...autoGeneratedResolvers, | |
| }, | |
| }); | |
| return executableSchema; | |
| } | |
| } | |