private static ITypeDefinitionNode CreateTypes(FullType type)
        {
            switch (type.Kind)
            {
            case TypeKind.ENUM:
                return(CreateEnumType(type));

            case TypeKind.INPUT_OBJECT:
                return(CreateInputObject(type));

            case TypeKind.INTERFACE:
                return(CreateInterface(type));

            case TypeKind.OBJECT:
                return(CreateObject(type));

            case TypeKind.SCALAR:
                return(CreateScalar(type));

            case TypeKind.UNION:
                return(CreateUnion(type));

            default:
                throw new NotSupportedException(
                          IntroResources.Type_NotSupported);
            }
        }
 private static EnumTypeDefinitionNode CreateEnumType(FullType type)
 {
     return(new EnumTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>(),
                CreateEnumValues(type.EnumValues)
            ));
 }
 private static ScalarTypeDefinitionNode CreateScalar(
     FullType type)
 {
     return(new ScalarTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>()
            ));
 }
 private static UnionTypeDefinitionNode CreateUnion(
     FullType type)
 {
     return(new UnionTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>(),
                CreateNamedTypeRefs(type.PossibleTypes)
            ));
 }
 private static InputObjectTypeDefinitionNode CreateInputObject(
     FullType type)
 {
     return(new InputObjectTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>(),
                CreateInputValues(type.InputFields)
            ));
 }
Пример #6
0
 private static InterfaceTypeDefinitionNode CreateInterface(
     FullType type)
 {
     return(new InterfaceTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>(),
                CreateFields(type.Fields)
            ));
 }
 private static ObjectTypeDefinitionNode CreateObject(
     FullType type)
 {
     return(new ObjectTypeDefinitionNode
            (
                null,
                new NameNode(type.Name),
                CreateDescription(type.Description),
                Array.Empty <DirectiveNode>(),
                CreateNamedTypeRefs(type.Interfaces),
                CreateFields(type.Fields)
            ));
 }
Пример #8
0
        internal static SchemaFeatures FromIntrospectionResult(
            IntrospectionResult result)
        {
            var      features  = new SchemaFeatures();
            FullType directive = result.Data.Schema.Types.First(t =>
                                                                t.Name.Equals(_directiveName, StringComparison.Ordinal));

            features.HasRepeatableDirectives = directive.Fields.Any(t =>
                                                                    t.Name.Equals(_isRepeatable, StringComparison.Ordinal));
            features.HasDirectiveLocations = directive.Fields.Any(t =>
                                                                  t.Name.Equals(_locations, StringComparison.Ordinal));

            FullType schema = result.Data.Schema.Types.First(t =>
                                                             t.Name.Equals(_schemaName, StringComparison.Ordinal));

            features.HasSubscriptionSupport = schema.Fields.Any(t =>
                                                                t.Name.Equals(_subscriptionType, StringComparison.Ordinal));

            return(features);
        }