public override void OnBeforeCreate( IDescriptorContext context, ISchemaBuilder schemaBuilder) { var allSchemas = new OrderedDictionary <NameString, DocumentNode>(); foreach (KeyValuePair <NameString, IRequestExecutor> executor in context.GetRemoteExecutors()) { allSchemas.Add( executor.Key, Utf8GraphQLParser.Parse(executor.Value.Schema.Print())); } IReadOnlyList <DocumentNode> typeExtensions = context.GetTypeExtensions(); // merge schemas DocumentNode mergedSchema = MergeSchemas(context, allSchemas); mergedSchema = AddExtensions(mergedSchema, typeExtensions); mergedSchema = RewriteMerged(context, mergedSchema); mergedSchema = mergedSchema.RemoveBuiltInTypes(); VisitMerged(context, mergedSchema); MarkExternalFields(schemaBuilder, mergedSchema); BuildNameLookup(context, schemaBuilder, mergedSchema, allSchemas.Keys); schemaBuilder .AddDocument(mergedSchema) .AddDirectiveType <DelegateDirectiveType>() .AddDirectiveType <ComputedDirectiveType>() .AddDirectiveType <SourceDirectiveType>() .SetTypeResolver(IsOfTypeFallback); }
public RemoteSchemaDefinition Build( IDescriptorContext context, ISchema schema) { var extensionDocuments = new List <DocumentNode>(context.GetTypeExtensions(_key)); if (_schemaDirectives.Count > 0) { var schemaExtension = new SchemaExtensionNode( null, _schemaDirectives, Array.Empty <OperationTypeDefinitionNode>()); extensionDocuments.Add(new DocumentNode(new[] { schemaExtension })); } return(new RemoteSchemaDefinition( _name.HasValue ? _name : schema.Name, schema.ToDocument(), extensionDocuments)); }