Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
    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;
    }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public static ISchema MakeExecutableSchema(
     ISchema schema,
     IResolverMap resolvers,
     ISubscriberMap subscribers = null)
 {
     return(MakeExecutableSchema(
                new SchemaBuilder().Import(schema),
                resolvers,
                subscribers));
 }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
 public static Subscriber?GetSubscriber(this ISubscriberMap map, ObjectDefinition type,
                                        FieldDefinition field)
 {
     return(map.GetSubscriber(type.Name, field.Name));
 }
Ejemplo n.º 9
0
 public static Subscriber GetSubscriber(this ISubscriberMap map, ComplexType type,
                                        KeyValuePair <string, IField> field)
 {
     return(map.GetSubscriber(type.Name, field.Key));
 }