Ejemplo n.º 1
0
        public void ConfigureField(ComplexGraphType <TModel> graphType, GraphTypeCache cache, IServiceCollection services)
        {
            FieldType field;

            if (TryGetScalarGraphType(out var graphQlType))
            {
                AuthResolver.ValidateGraphqlType(graphQlType, Property);
                field = new FieldType
                {
                    Type     = graphQlType,
                    Name     = Property.Name,
                    Resolver = AuthResolver.GetResolver(services, NameFieldResolver.Instance)
                };
            }
            else
            {
                if (ResolverConfiguration == null)
                {
                    throw new UnableToResolveException(Property, typeof(TModel));
                }

                field          = ResolverConfiguration.ConfigureField(Property, cache, services);
                field.Resolver = AuthResolver.GetResolver(services, field.Resolver);
            }

            var descAttr = Property.GetCustomAttribute <DescriptionAttribute>();

            field.Description = descAttr?.Description;

            var isOutputType      = field.Type?.IsOutputType();
            var isOutputGraphType = field.ResolvedType?.IsOutputType();

            graphType.AddField(field);
        }
Ejemplo n.º 2
0
        protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services)
        {
            if (_scalarTypeMap.TryGetGraphType(typeof(TElem), out var scalarGraphType))
            {
                var listType = typeof(ListGraphType <>).MakeGenericType(scalarGraphType);

                return((IGraphType)Activator.CreateInstance(listType));
            }

            return(new ListGraphType(cache.GetOrCreate <TElem>(services)));
        }
Ejemplo n.º 3
0
        public FieldType ConfigureField(PropertyInfo prop, GraphTypeCache cache, IServiceCollection services)
        {
            RegisterResolver(services);

            var graphType = GetGraphType(cache, services);

            var unresolvedType = OverrideForScalarList(graphType);

            return(new FieldType {
                Name = prop.Name,
                Type = unresolvedType,
                ResolvedType = unresolvedType == null ? graphType : null,
                Resolver = CreateGraphQLResolver(),
                Arguments = GetQueryArguments(cache, services)
            });
        }
Ejemplo n.º 4
0
        protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services)
        {
            if (_scalarTypeMap.TryGetGraphType(typeof(TProp), out var scalarGraphType))
            {
                var listGraphType    = typeof(ListGraphType <>).MakeGenericType(scalarGraphType);
                var listTypeInstance = (ListGraphType)Activator.CreateInstance(listGraphType);
                listTypeInstance.ResolvedType = (IGraphType)Activator.CreateInstance(scalarGraphType);
                if (listTypeInstance.ResolvedType is NonNullGraphType elemTypeInstance)
                {
                    elemTypeInstance.ResolvedType = (IGraphType)Activator.CreateInstance(scalarGraphType.GetGenericArguments().Single());
                }

                return(listTypeInstance);
            }

            return(new ListGraphType(cache.GetOrCreate(typeof(TProp), services)));
        }
Ejemplo n.º 5
0
        public void ConfigureInputTypeField(InputObjectGraphType <TModel> graphType, GraphTypeCache cache)
        {
            if (TryGetScalarGraphType(out var graphQlType))
            {
                graphType.Field(
                    type: graphQlType,
                    name: Property.Name
                    );
            }
            else
            {
                var inputType = cache.GetOrCreateInputType(Property.PropertyType);
                inputType = TryWrapNonNull(inputType);

                graphType.AddField(new FieldType
                {
                    ResolvedType = inputType,
                    Type         = Property.PropertyType,
                    Name         = Property.Name
                });
            }
        }
Ejemplo n.º 6
0
 protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services)
 {
     return(cache.GetOrCreate <TProp>(services));
 }
Ejemplo n.º 7
0
 protected virtual QueryArguments GetQueryArguments(GraphTypeCache cache, IServiceCollection services)
 {
     return(null);
 }
Ejemplo n.º 8
0
 protected abstract IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services);
Ejemplo n.º 9
0
 protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services)
 {
     return(new ListGraphType(cache.GetOrCreate <TElem>(services)));
 }
Ejemplo n.º 10
0
 protected override QueryArguments GetQueryArguments(GraphTypeCache cache, IServiceCollection services)
 {
     return(cache.GetOrCreateArguments <TArgs>(services));
 }
Ejemplo n.º 11
0
 protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services)
 {
     return(cache.GetOrCreate <Connection <TModel> >(services));
 }