protected virtual InterfaceGraphType ToInterfaceType(GraphQLInterfaceTypeDefinition interfaceDef)
        {
            var name       = (string)interfaceDef.Name.Value;
            var typeConfig = Types.For(name);

            AssertKnownType(typeConfig);

            var type = new InterfaceGraphType
            {
                Name        = name,
                Description = typeConfig.Description ?? interfaceDef.Description?.Value.ToString() ?? interfaceDef.Comment?.Text.ToString(),
                ResolveType = typeConfig.ResolveType,
            }.SetAstType(interfaceDef);

            OverrideDeprecationReason(type, typeConfig.DeprecationReason);

            typeConfig.CopyMetadataTo(type);

            if (interfaceDef.Fields != null)
            {
                foreach (var f in interfaceDef.Fields)
                {
                    type.AddField(ToFieldType(type.Name, f));
                }
            }

            return(type);
        }
Example #2
0
            protected override InterfaceGraphType ToInterfaceType(GraphQLInterfaceTypeDefinition interfaceDef)
            {
                var type = base.ToInterfaceType(interfaceDef);

                type.ResolveType = _ => null;
                return(type);
            }
 public static bool AstTypeHasFields(this IProvideMetadata type)
 {
     return(GetAstType <ASTNode>(type) switch
     {
         GraphQLObjectTypeDefinition otd => otd.Fields?.Any() ?? false,
         GraphQLInterfaceTypeDefinition itd => itd.Fields?.Any() ?? false,
         _ => false
     });
Example #4
0
        private string PrintInterfaceTypeDefinition(GraphQLInterfaceTypeDefinition node)
        {
            var name       = PrintName(node.Name);
            var directives = node.Directives?.Select(PrintDirective);
            var fields     = node.Fields?.Select(PrintFieldDefinition);

            return(Join(new[]
            {
                "interface",
                name,
                Join(directives, " "),
                Block(fields) ?? "{ }"
            },
                        " "));
        }
Example #5
0
        protected virtual InterfaceGraphType ToInterfaceType(GraphQLInterfaceTypeDefinition interfaceDef)
        {
            var typeConfig = Types.For(interfaceDef.Name.Value);

            var type = new InterfaceGraphType();

            type.Name        = interfaceDef.Name.Value;
            type.Description = typeConfig.Description;
            type.ResolveType = typeConfig.ResolveType;

            CopyMetadata(type, typeConfig);

            var fields = interfaceDef.Fields.Select(f => ToFieldType(type.Name, f));

            fields.Apply(f => type.AddField(f));

            return(type);
        }
        protected virtual InterfaceGraphType ToInterfaceType(GraphQLInterfaceTypeDefinition interfaceDef)
        {
            var typeConfig = Types.For(interfaceDef.Name.Value);

            var type = new InterfaceGraphType
            {
                Name        = interfaceDef.Name.Value,
                Description = typeConfig.Description ?? interfaceDef.Comment?.Text,
                ResolveType = typeConfig.ResolveType
            }.SetAstType(interfaceDef);

            VisitNode(type, v => v.VisitInterface(type));

            CopyMetadata(type, typeConfig);

            var fields = interfaceDef.Fields.Select(f => ToFieldType(type.Name, f));

            fields.Apply(f => type.AddField(f));

            return(type);
        }
Example #7
0
        protected virtual InterfaceGraphType ToInterfaceType(GraphQLInterfaceTypeDefinition interfaceDef)
        {
            var typeConfig = Types.For(interfaceDef.Name.Value);

            var type = new InterfaceGraphType
            {
                Name        = interfaceDef.Name.Value,
                Description = typeConfig.Description ?? interfaceDef.Comment?.Text,
                ResolveType = typeConfig.ResolveType
            };

            ApplyDeprecatedDirective(interfaceDef.Directives, reason => type.DeprecationReason = typeConfig.DeprecationReason ?? reason);

            CopyMetadata(type, typeConfig);

            var fields = interfaceDef.Fields.Select(f => ToFieldType(type.Name, f));

            fields.Apply(f => type.AddField(f));

            return(type);
        }
        public virtual GraphQLInterfaceTypeDefinition BeginVisitInterfaceTypeDefinition(GraphQLInterfaceTypeDefinition node)
        {
            if (node.Directives != null)
            {
                this.BeginVisitNodeCollection(node.Directives);
            }

            if (node.Fields != null)
            {
                this.BeginVisitNodeCollection(node.Fields);
            }

            return(node);
        }
Example #9
0
 public InterfaceType(GraphQLInterfaceTypeDefinition definition)
 {
     this.definition = definition;
     this.Name       = definition.Name?.Value;
 }