Beispiel #1
0
        public static DocumentNode RemoveBuiltInTypes(DocumentNode schema)
        {
            var definitions = new List <IDefinitionNode>();

            foreach (IDefinitionNode definition in schema.Definitions)
            {
                if (definition is INamedSyntaxNode type)
                {
                    if (!IntrospectionTypes.IsIntrospectionType(
                            type.Name.Value) &&
                        !Types.Scalars.IsBuiltIn(type.Name.Value))
                    {
                        definitions.Add(definition);
                    }
                }
                else if (definition is DirectiveDefinitionNode directive)
                {
                    if (!Types.Directives.IsBuiltIn(directive.Name.Value))
                    {
                        definitions.Add(definition);
                    }
                }
                else
                {
                    definitions.Add(definition);
                }
            }

            return(new DocumentNode(definitions));
        }
Beispiel #2
0
        public TypeDiscoverer(
            IDescriptorContext context,
            TypeRegistry typeRegistry,
            TypeLookup typeLookup,
            IEnumerable <ITypeReference> initialTypes,
            ITypeInterceptor interceptor,
            bool includeSystemTypes = true)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (typeRegistry is null)
            {
                throw new ArgumentNullException(nameof(typeRegistry));
            }

            if (typeLookup is null)
            {
                throw new ArgumentNullException(nameof(typeLookup));
            }

            if (initialTypes is null)
            {
                throw new ArgumentNullException(nameof(initialTypes));
            }

            if (interceptor is null)
            {
                throw new ArgumentNullException(nameof(interceptor));
            }

            _typeRegistry = typeRegistry;

            if (includeSystemTypes)
            {
                _unregistered.AddRange(
                    IntrospectionTypes.CreateReferences(context.TypeInspector));
                _unregistered.AddRange(
                    Directives.CreateReferences(context.TypeInspector));
            }

            _unregistered.AddRange(typeRegistry.GetTypeRefs());
            _unregistered.AddRange(initialTypes.Distinct());

            _typeRegistrar = new TypeRegistrar(context, typeRegistry, typeLookup, interceptor);

            _handlers = new ITypeRegistrarHandler[]
            {
                new SchemaTypeReferenceHandler(),
                new ExtendedTypeReferenceHandler(context.TypeInspector),
                new SyntaxTypeReferenceHandler(context.TypeInspector)
            };

            _typeInspector = context.TypeInspector;
        }
        private static void GenerateTypes(
            CodeGenerationResult result,
            DataGeneratorContext dataContext,
            CodeGeneratorContext generatorContext,
            ISchema schema)
        {
            GenerateQueryType(
                result,
                dataContext,
                generatorContext,
                schema.Types
                .OfType <ObjectType>()
                .Where(type => !IntrospectionTypes.IsIntrospectionType(type))
                .ToList());

            GenerateDependencyInjectionCode(
                result,
                generatorContext);
        }
 private static bool IsPublicAndNoScalar(INamedType type) =>
 !IntrospectionTypes.IsIntrospectionType(type.Name) &&
 !(type is ScalarType);