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); }
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))); }
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) }); }
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))); }
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 }); } }
protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services) { return(cache.GetOrCreate <TProp>(services)); }
protected virtual QueryArguments GetQueryArguments(GraphTypeCache cache, IServiceCollection services) { return(null); }
protected abstract IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services);
protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services) { return(new ListGraphType(cache.GetOrCreate <TElem>(services))); }
protected override QueryArguments GetQueryArguments(GraphTypeCache cache, IServiceCollection services) { return(cache.GetOrCreateArguments <TArgs>(services)); }
protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services) { return(cache.GetOrCreate <Connection <TModel> >(services)); }