public void GetFields() { /* Given */ var namedTypeName = Schema.Query.Name; /* When */ var fields = Schema.GetFields(namedTypeName); /* Then */ Assert.Single( fields, kv => kv.Key == "name" && (ScalarType)kv.Value.Type == ScalarType.String); }
private static void MergeComplexTypeFields(ISchema right, SchemaBuilder builder, ComplexType rightType) { if (builder.TryGetType <ComplexType>(rightType.Name, out var leftType)) { var rightTypeFields = right.GetFields(rightType.Name); foreach (var rightTypeField in rightTypeFields) { builder.Connections(connect => { // if field already exists skip it if (connect.TryGetField(leftType, rightTypeField.Key, out _)) { return; } // include field connect.Include(leftType, rightTypeField); // include resolver var resolver = right.GetResolver(rightType.Name, rightTypeField.Key); if (resolver != null) { connect.GetOrAddResolver(leftType, rightTypeField.Key) .Run(resolver); } // include subscriber var subscriber = right.GetSubscriber(rightType.Name, rightTypeField.Key); if (subscriber != null) { connect.GetOrAddSubscriber(leftType, rightTypeField.Key) .Run(subscriber); } }); } } else { throw new SchemaBuilderException( rightType.Name, $"Cannot merge fields of {rightType}. Type is now known by builder. " + $"Call MergeComplexType first."); } }
private static void MergeComplexType(ISchema right, SchemaBuilder builder, ComplexType rightType) { if (builder.TryGetType <ComplexType>(rightType.Name, out var leftType)) { var rightTypeFields = right.GetFields(rightType.Name); foreach (var rightTypeField in rightTypeFields) { builder.Connections(connect => { if (connect.TryGetField(leftType, rightTypeField.Key, out _)) { return; } connect.Include(leftType, new[] { rightTypeField }); var resolver = right.GetResolver(rightType.Name, rightTypeField.Key); if (resolver != null) { connect.GetOrAddResolver(leftType, rightTypeField.Key) .Run(resolver); } var subscriber = right.GetSubscriber(rightType.Name, rightTypeField.Key); if (subscriber != null) { connect.GetOrAddSubscriber(leftType, rightTypeField.Key) .Run(subscriber); } }); } } else { builder .Include(rightType) .Connections(connect => { var fields = right.GetFields(rightType.Name).ToList(); connect.Include(rightType, fields); foreach (var rightTypeField in fields) { var resolver = right.GetResolver(rightType.Name, rightTypeField.Key); if (resolver != null) { connect.GetOrAddResolver(rightType, rightTypeField.Key) .Run(resolver); } var subscriber = right.GetSubscriber(rightType.Name, rightTypeField.Key); if (subscriber != null) { connect.GetOrAddSubscriber(rightType, rightTypeField.Key) .Run(subscriber); } } }); } }