Exemplo 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());
        }
Exemplo 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;
    }
Exemplo 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);
        }
Exemplo n.º 4
0
    public void Add(IResolverMap resolvers, ISubscriberMap?subscribers)
    {
        foreach (var(typeName, fields) in resolvers.GetTypes())
        {
            foreach (var field in fields)
            {
                var resolver   = resolvers?.GetResolver(typeName, field);
                var subscriber = subscribers?.GetSubscriber(typeName, field);

                if (resolver is not null)
                {
                    Add(typeName, field, resolver, subscriber);
                }
            }
        }

        if (subscribers is not null)
        {
            foreach (var(typeName, fields) in subscribers.GetTypes())
            {
                foreach (var field in fields)
                {
                    var resolver   = resolvers?.GetResolver(typeName, field);
                    var subscriber = subscribers?.GetSubscriber(typeName, field);

                    if (subscriber is not null)
                    {
                        Add(typeName, field, subscriber);
                    }
                }
            }
        }
    }
Exemplo n.º 5
0
 public static ISchema MakeExecutableSchema(
     ISchema schema,
     IResolverMap resolvers,
     ISubscriberMap subscribers = null)
 {
     return(MakeExecutableSchema(
                new SchemaBuilder().Import(schema),
                resolvers,
                subscribers));
 }
Exemplo n.º 6
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());
        }
Exemplo n.º 7
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());
        }
Exemplo n.º 8
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());
        }
Exemplo n.º 9
0
 public static Resolver GetResolver(this IResolverMap map, ComplexType type, KeyValuePair <string, IField> field)
 {
     return(map.GetResolver(type.Name, field.Key));
 }
Exemplo n.º 10
0
 public Injector()
 {
     _reflector   = new Reflector <InjectAttribute>();
     _resolverMap = new ResolverMap();
 }
Exemplo n.º 11
0
 public TypeBinder(IInjector injector, IResolverMap resolverMap, Type target)
 {
     _injector    = injector;
     _resolverMap = resolverMap;
     _target      = target;
 }
Exemplo n.º 12
0
 public ResolversMap(IResolverMap resolvers, ISubscriberMap?subscribers = null)
 {
     Add(resolvers, subscribers);
 }
Exemplo n.º 13
0
 public static Resolver?GetResolver(this IResolverMap map, ObjectDefinition type, FieldDefinition field)
 {
     return(map.GetResolver(type.Name, field.Name));
 }