public static ISchema MakeExecutableSchemaWithIntrospection( SchemaBuilder builder, IResolverMap resolvers, ISubscriberMap subscribers = null, IReadOnlyDictionary <string, IValueConverter> converters = null, IReadOnlyDictionary <string, CreateDirectiveVisitor> directives = null) { // add converters if (converters != null) { UseConverters(builder, converters); } builder.UseResolversAndSubscribers(resolvers, subscribers); if (directives != null) { builder.ApplyDirectives(directives); } var schema = builder.Build(); var introspection = Introspect.Schema(schema); return(new SchemaBuilder() .Merge(schema, introspection) .Build()); }
public ExecutableSchema( IReadOnlyDictionary<string, TypeDefinition> types, IReadOnlyDictionary<string, Dictionary<string, FieldDefinition>> fields, IReadOnlyDictionary<string, Dictionary<string, InputValueDefinition>> inputFields, IReadOnlyDictionary<string, DirectiveDefinition> directiveTypes, ObjectDefinition queryRoot, IResolverMap resolvers, IReadOnlyDictionary<string, IValueConverter> scalarSerializers, ObjectDefinition? mutationRoot = null, ObjectDefinition? subscriptionRoot = null, ISubscriberMap? subscribers = null, IEnumerable<Directive>? directives = null) { _types = types; _fields = fields; _inputFields = inputFields; _directiveTypes = directiveTypes; _resolvers = resolvers; _subscribers = subscribers; _scalarSerializers = scalarSerializers; _directives = new DirectiveList(directives); Query = queryRoot; Mutation = mutationRoot; Subscription = subscriptionRoot; }
public static SchemaBuilder UseResolversAndSubscribers( this SchemaBuilder builder, IResolverMap resolvers, ISubscriberMap subscribers = null) { foreach (var type in builder.GetTypes <ObjectType>()) { builder.Connections(connections => { foreach (var field in connections.GetFields(type)) { var resolver = resolvers.GetResolver(type.Name, field.Key); if (resolver != null) { connections.GetOrAddResolver(type, field.Key) .Run(resolver); } var subscriber = subscribers?.GetSubscriber(type.Name, field.Key); if (subscriber != null) { connections.GetOrAddSubscriber(type, field.Key) .Run(subscriber); } } }); } return(builder); }
public static ISchema MakeExecutableSchema( ISchema schema, IResolverMap resolvers, ISubscriberMap subscribers = null) { return(MakeExecutableSchema( new SchemaBuilder().Import(schema), resolvers, subscribers)); }
public static ISchema MakeExecutableSchema( SchemaBuilder builder, IResolverMap resolvers, ISubscriberMap subscribers = null, Dictionary <string, CreateDirectiveVisitor> directives = null) { // bind resolvers UseResolversAndSubscribers(builder, resolvers, subscribers); // execute directives if (directives != null) { UseDirectives(builder, directives); } return(builder.Build()); }
public static ISchema MakeExecutableSchemaWithIntrospection( SchemaBuilder builder, IResolverMap resolvers, ISubscriberMap subscribers = null, Dictionary <string, CreateDirectiveVisitor> directives = null) { UseResolversAndSubscribers(builder, resolvers, subscribers); if (directives != null) { UseDirectives(builder, directives); } var schema = builder.Build(); var introspection = Introspect.Schema(schema); return(new SchemaBuilder() .Merge(schema, introspection) .Build()); }
public static ISchema MakeExecutableSchema( SchemaBuilder builder, IResolverMap resolvers, ISubscriberMap subscribers = null, IReadOnlyDictionary <string, IValueConverter> converters = null, IReadOnlyDictionary <string, CreateDirectiveVisitor> directives = null) { // add converters if (converters != null) { UseConverters(builder, converters); } // bind resolvers builder.UseResolversAndSubscribers(resolvers, subscribers); // execute directives if (directives != null) { builder.ApplyDirectives(directives); } return(builder.Build()); }
public static Subscriber?GetSubscriber(this ISubscriberMap map, ObjectDefinition type, FieldDefinition field) { return(map.GetSubscriber(type.Name, field.Name)); }
public static Subscriber GetSubscriber(this ISubscriberMap map, ComplexType type, KeyValuePair <string, IField> field) { return(map.GetSubscriber(type.Name, field.Key)); }