From 46723df589e9f3fa585df825b593080ae41df8e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 9 Jan 2025 14:09:09 +0100 Subject: [PATCH 1/8] New Linq Parser --- .../Attributes/GraphQLArgumentAttribute.cs | 8 + .../Attributes/GraphQLMemberAttribute.cs | 12 ++ .../Common/ICursorPaging.cs | 1 + src/Linq2GraphQL.Client/QueryNode.cs | 7 +- src/Linq2GraphQL.Client/Utilities.cs | 46 ++++-- .../Visitors/MemberNode.cs | 134 +++++++++++++++ .../Visitors/ParameterVisitor.cs | 152 ++++++++++++++++++ .../GraphQLSchema/RootSchema.cs | 51 +----- .../Properties/launchSettings.json | 2 +- .../Templates/Class/ClassTemplate.cs | 19 ++- .../Templates/Class/ClassTemplate.tt | 1 + .../Inputs/ByteOperationFilterInput.cs | 102 ++++++++++++ .../Generated/Inputs/InputFactory.cs | 150 +++++++++++++++++ .../Generated/Inputs/ItemFilterInput.cs | 7 + .../Generated/Inputs/ItemInput.cs | 7 + .../Inputs/ListByteOperationFilterInput.cs | 46 ++++++ .../Generated/Types/Address.cs | 3 + .../Generated/Types/AnimalsConnection.cs | 4 + .../Generated/Types/AnimalsEdge.cs | 2 + .../Generated/Types/CollectionSegmentInfo.cs | 2 + .../Generated/Types/Customer.cs | 5 + .../Generated/Types/Item.cs | 6 + .../Generated/Types/Order.cs | 13 +- .../Generated/Types/OrderLine.cs | 5 + .../Generated/Types/OrdersConnection.cs | 4 + .../Generated/Types/OrdersEdge.cs | 2 + .../OrdersNoBackwardPaginationConnection.cs | 4 + .../Types/OrdersNoBackwardPaginationEdge.cs | 2 + .../Types/OrdersNoTotalCountConnection.cs | 3 + .../Generated/Types/OrdersNoTotalCountEdge.cs | 2 + .../OrdersOffsetPagingCollectionSegment.cs | 3 + .../Generated/Types/Pig.cs | 4 + .../Generated/Types/Spider.cs | 4 + test/Linq2GraphQL.Tests/QueryIncludeTests.cs | 8 +- test/Linq2GraphQL.Tests/QueryPagingTests.cs | 4 +- 35 files changed, 750 insertions(+), 75 deletions(-) create mode 100644 src/Linq2GraphQL.Client/Attributes/GraphQLArgumentAttribute.cs create mode 100644 src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs create mode 100644 src/Linq2GraphQL.Client/Visitors/MemberNode.cs create mode 100644 src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs create mode 100644 test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs create mode 100644 test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs diff --git a/src/Linq2GraphQL.Client/Attributes/GraphQLArgumentAttribute.cs b/src/Linq2GraphQL.Client/Attributes/GraphQLArgumentAttribute.cs new file mode 100644 index 00000000..ba4f913b --- /dev/null +++ b/src/Linq2GraphQL.Client/Attributes/GraphQLArgumentAttribute.cs @@ -0,0 +1,8 @@ +namespace Linq2GraphQL.Client; + +[AttributeUsage(AttributeTargets.Parameter)] +public class GraphQLArgumentAttribute(string graphQLName, string graphQLType) : Attribute +{ + public string GraphQLType { get; private set; } = graphQLType; + public string GraphQLName { get; private set; } = graphQLName; +} \ No newline at end of file diff --git a/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs b/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs new file mode 100644 index 00000000..36bb92a0 --- /dev/null +++ b/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs @@ -0,0 +1,12 @@ +namespace Linq2GraphQL.Client; + +[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] +public class GraphQLMemberAttribute : Attribute +{ + public GraphQLMemberAttribute(string graphQLName) + { + GraphQLName = graphQLName; + } + + public string GraphQLName { get; private set; } +} \ No newline at end of file diff --git a/src/Linq2GraphQL.Client/Common/ICursorPaging.cs b/src/Linq2GraphQL.Client/Common/ICursorPaging.cs index 8abf61f3..8d602520 100644 --- a/src/Linq2GraphQL.Client/Common/ICursorPaging.cs +++ b/src/Linq2GraphQL.Client/Common/ICursorPaging.cs @@ -9,6 +9,7 @@ namespace Linq2GraphQL.Client.Common { public interface ICursorPaging { + [GraphQLMember("pageInfo")] public PageInfo PageInfo { get; set; } } diff --git a/src/Linq2GraphQL.Client/QueryNode.cs b/src/Linq2GraphQL.Client/QueryNode.cs index ec3eba6a..2986b656 100644 --- a/src/Linq2GraphQL.Client/QueryNode.cs +++ b/src/Linq2GraphQL.Client/QueryNode.cs @@ -82,7 +82,7 @@ public void AddChildNode(MemberInfo member, string name = null) public int Level => Parent?.Level + 1 ?? 1; public int Leaf { get; internal set; } = 1; - public void AddChildNode(QueryNode childNode) + public QueryNode AddChildNode(QueryNode childNode) { var currentNode = ChildNodes.FirstOrDefault(e => e.Name == childNode.Name && e.argumentHashCodeId == childNode.argumentHashCodeId); if (currentNode == null) @@ -90,7 +90,7 @@ public void AddChildNode(QueryNode childNode) childNode.Parent = this; childNode.Leaf = ChildNodes.Count + 1; ChildNodes.Add(childNode); - return; + return childNode; } else if (childNode.IncludePrimitive) { @@ -101,6 +101,9 @@ public void AddChildNode(QueryNode childNode) { currentNode.AddChildNode(child); } + + return currentNode; + } public void SetArgumentValue(string graphName, object value) diff --git a/src/Linq2GraphQL.Client/Utilities.cs b/src/Linq2GraphQL.Client/Utilities.cs index 3b488bc1..3c8ad8df 100644 --- a/src/Linq2GraphQL.Client/Utilities.cs +++ b/src/Linq2GraphQL.Client/Utilities.cs @@ -1,6 +1,8 @@ -using System.Linq.Expressions; +using Linq2GraphQL.Client.Visitors; +using System.Linq.Expressions; using System.Reflection; using System.Reflection.Metadata.Ecma335; +using VisitorPlayground.Visitors; namespace Linq2GraphQL.Client; @@ -24,19 +26,30 @@ public static string GetArgumentsId(IEnumerable objects) } } - private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression) + + + public static void ParseExpression(Expression body, QueryNode parent) { - if (methodCallExpression.Arguments.Count != 2) - { - return false; - } - ; - var methodName = methodCallExpression.Method.Name; - return (methodName == "Select" || methodName == "SelectMany"); + var parameterVisitor = new ParameterVisitor(new MemberNode(null, null)); + var topNode = parameterVisitor.ParseExpression(body); + var tree = topNode.PrintMemberTree(); + + + + topNode.PopulateChildQueryNodes(parent); + + parent.SetAddPrimitiveChildren(); + + //foreach (var childNode in node.ChildNodes) + //{ + // parent.AddChildNode(childNode); + //} } - public static void ParseExpression(Expression body, QueryNode parent) + + + public static void ParseExpression_OLD(Expression body, QueryNode parent) { var node = new QueryNode(parent.Member); ParseExpressionInternal(body, node); @@ -48,6 +61,19 @@ public static void ParseExpression(Expression body, QueryNode parent) } } + private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression) + { + if (methodCallExpression.Arguments.Count != 2) + { + return false; + } + + ; + var methodName = methodCallExpression.Method.Name; + return (methodName == "Select" || methodName == "SelectMany"); + } + + private static void ParseExpressionInternal(Expression body, QueryNode parent) { if (body.NodeType == ExpressionType.MemberInit) diff --git a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs new file mode 100644 index 00000000..310fe60f --- /dev/null +++ b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs @@ -0,0 +1,134 @@ +using Linq2GraphQL.Client; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; + +namespace Linq2GraphQL.Client.Visitors +{ + public class MemberNode(MemberInfo memberInfo, List arguments = null, ParameterExpression parameterExpression = null) + { + + public string ParameterName => parameterExpression?.Name; + + public MemberInfo MemberInfo => memberInfo; + public MemberNode Parent { get; set; } + public List Children { get; set; } = []; + public List Arguments => arguments; + + + public void SetParameterExpression(ParameterExpression param) + { + parameterExpression = param; + } + + + public bool HasArguments => arguments != null && arguments.Count > 0; + + public MemberNode GetMemberNodeFromParameterExpression(ParameterExpression expression) + { + if (parameterExpression == expression || Parent == null) return this; + return Parent.GetMemberNodeFromParameterExpression(expression); + } + + + public void AddChild(MemberNode memberNode) + { + memberNode.Parent = this; + Children.Add(memberNode); + } + + public MemberNode AddMembers(Expression node) + { + var members = GetMembers(node); + members.Reverse(); + + if (members.Count == 0) { return null; } + + var topNode = new MemberNode(members[0]); + var currentNode = topNode; + foreach (var member in members.Skip(1)) + { + var newNode = new MemberNode(member); + currentNode.AddChild(newNode); + currentNode = newNode; + } + AddChild(topNode); + + return currentNode; + + } + + private static List GetMembers(Expression expression) + { + var members = new List(); + + if (expression.NodeType == ExpressionType.MemberAccess) + { + var memberExpression = (MemberExpression)expression; + members.Add(memberExpression.Member); + members.AddRange(GetMembers(memberExpression.Expression)); + } + + return members; + } + + public void PopulateChildQueryNodes(QueryNode queryNode) + { + + + foreach (var child in Children) + { + + var childNode = new QueryNode(child.MemberInfo, null, child.Arguments); + var addedNode = queryNode.AddChildNode(childNode); + child.PopulateChildQueryNodes(addedNode); + } + + + + } + + + public string PrintMemberTree(int level = 0) + { + var sb = new StringBuilder(); + //var cc = Children.Select(e => new { e.MemberInfo, e.Arguments, e.MemberInfo.MetadataToken }).Distinct(); + //var c = cc.Count(); + + sb.AppendLine($"Level: {level}"); + + level++; + + if (HasArguments) + { + var argumentList = $"({string.Join(", ", Arguments.Select(e => e.Value))})"; + + sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"}{argumentList}"); + } + else + { + sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"} "); + } + + sb.AppendLine($"Parent: {Parent?.MemberInfo?.Name}"); + + sb.AppendLine($"Parameter: {parameterExpression?.Name}"); + + sb.AppendLine(""); + + foreach (var child in Children) + { + sb.Append(child.PrintMemberTree(level)); + } + + sb.AppendLine(""); + + return sb.ToString(); + + } + + + } + + +} diff --git a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs new file mode 100644 index 00000000..ff1a0ea3 --- /dev/null +++ b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs @@ -0,0 +1,152 @@ +using Linq2GraphQL.Client; +using Linq2GraphQL.Client.Visitors; +using System.Linq.Expressions; +using System.Reflection; +using System.Runtime.CompilerServices; + +namespace VisitorPlayground.Visitors +{ + public class ParameterVisitor(MemberNode memberNode) : ExpressionVisitor + { + + public MemberNode ParseExpression(Expression expression) + { + Visit(expression); + return memberNode; + } + + + + protected override Expression VisitMember(MemberExpression node) + { + var attribute = node.Member.GetCustomAttribute(); + + if (attribute != null) + { + var parameter = GetParameterExpression(node); + var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter); + targetNode.AddMembers(node); + } + + return node; + + } + + + protected override Expression VisitMethodCall(MethodCallExpression expression) + { + var attribute = expression.Method.GetCustomAttribute(); + + if (attribute != null) + { + + var parExp = GetParameterExpression(expression); + var i = 0; + var argumentValues = new List(); + foreach (var parameter in expression.Method.GetParameters()) + { + var graphQLArgumentAttribute = parameter.GetCustomAttribute(); + if (graphQLArgumentAttribute != null) + { + var arg = expression.Arguments[i]; + var v = GetArgumentValue(arg); + + argumentValues.Add(new ArgumentValue(graphQLArgumentAttribute.GraphQLName, graphQLArgumentAttribute.GraphQLType, GetArgumentValue(arg))); + + } + i++; + } + + var targetNode = memberNode.GetMemberNodeFromParameterExpression(parExp); + targetNode.AddChild(new MemberNode(expression.Method, argumentValues)); + + + return expression; + } + + + if (IsLinqOperator(expression.Method)) + { + var memberExp = expression.Arguments[0] as MemberExpression; + var attr = memberExp?.Member.GetCustomAttribute(); + + if (attr != null) + { + var parameter = GetParameterExpression(expression.Arguments[1]); + + //var child = new MemberNode(memberExp.Member, null, parameter); + //memberNode.AddChild(child); + + var child = memberNode.AddMembers(memberExp); + child.SetParameterExpression(parameter); + + var visitor = new ParameterVisitor(child); + visitor.ParseExpression(expression.Arguments[1]); + return expression; + } + + } + return base.VisitMethodCall(expression); + } + + private static object GetArgumentValue(Expression element) + { + if (element is ConstantExpression) + { + return (element as ConstantExpression).Value; + } + + var l = Expression.Lambda(Expression.Convert(element, element.Type)); + return l.Compile().DynamicInvoke(); + } + + + private ParameterExpression GetParameterExpression(Expression expression) + { + if (expression == null) + { + return null; + } + + if (expression.NodeType == ExpressionType.Parameter) + { + return expression as ParameterExpression; + } + else if (expression.NodeType == ExpressionType.MemberAccess) + { + var member = (MemberExpression)expression; + return GetParameterExpression(member.Expression); + } + else if (expression.NodeType == ExpressionType.Lambda) + { + var member = (LambdaExpression)expression; + return GetParameterExpression(member.Parameters[0]); + } + else if (expression.NodeType == ExpressionType.Call) + { + var member = (MethodCallExpression)expression; + + if (member.Object != null) + { + return GetParameterExpression(member.Object); + } + + return GetParameterExpression(member.Arguments[0]); + + } + + + return null; + } + + private static bool IsLinqOperator(MethodInfo method) + { + if (method.DeclaringType != typeof(Queryable) && method.DeclaringType != typeof(Enumerable)) + return false; + return Attribute.GetCustomAttribute(method, typeof(ExtensionAttribute)) != null; + } + + } + + +} diff --git a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs index 45aa4670..dc917ecb 100644 --- a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs +++ b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs @@ -157,56 +157,7 @@ public CoreType CoreType } } - - - //private TypeInfo GetFieldTypeInfo() - //{ - - // if (Type == null) return null; - - // var allTypes = Type.GetAllTypes(); - - // var baseFieldType = Type.GetBaseBaseType(); - - // Type csharpType = null; - - // string csharpTypeName; - // if (Helpers.TypeMapping.TryGetValue(baseFieldType.Name, out var typeMapping)) - // { - // csharpTypeName = typeMapping.Name; - // csharpType = typeMapping.type; - // } - // else - // { - // csharpTypeName = baseFieldType.Name.ToPascalCase(); - // } - - - // var coreType = Type.GetCoreType(); - - // var isList = allTypes.Any(e => e.Kind == TypeKind.List); - // var isNoneNull = allTypes.Any(e => e.Kind == TypeKind.NonNull); - - // var graphTypeDefinition = isNoneNull ? baseFieldType.Name + "!" : baseFieldType.Name; - // if (isList) - // { - // graphTypeDefinition = $"[{graphTypeDefinition}]"; - // var gr = coreType.GetGraphQLTypeDefinition(); - // var cs = coreType.GetCSharpTypeDefinition(); - // } - - // return new TypeInfo - // { - - // Kind = baseFieldType.Kind, - // IsList = isList, - // IsNoneNull = isNoneNull, - // CSharpType = csharpType, - // CSharpTypeName = csharpTypeName, - // GraphTypeDefinition = graphTypeDefinition, - // IsEnum = baseFieldType.Kind == TypeKind.Enum - // }; - //} + } diff --git a/src/Linq2GraphQL.Generator/Properties/launchSettings.json b/src/Linq2GraphQL.Generator/Properties/launchSettings.json index d96bdd8e..60320b12 100644 --- a/src/Linq2GraphQL.Generator/Properties/launchSettings.json +++ b/src/Linq2GraphQL.Generator/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "Linq2GraphQL.Generator": { "commandName": "Project", - "commandLineArgs": "https://localhost:7184/graphql/ -c=\"SampleClient\" -n=\"Linq2GraphQL.TestClient\" -o=\"C:\\Code\\Linq2GraphQL.Client\\test\\Linq2GraphQL.TestClient\\Generated\" -s=true" + "commandLineArgs": "https://localhost:7184/graphql/ -c=\"SampleClient\" -n=\"Linq2GraphQL.TestClient\" -o=\"C:\\Code\\Github\\Linq2GraphQL.Client\\test\\Linq2GraphQL.TestClient\\Generated\" -s=true" } } } \ No newline at end of file diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs index e8e3a083..b022a92b 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs @@ -288,35 +288,42 @@ public virtual string TransformText() #line default #line hidden - this.Write("\")]\r\n public "); + this.Write("\")]\r\n [GraphQLMember(\""); #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); + + #line default + #line hidden + this.Write("\")]\r\n public "); + + #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(" "); - #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" { get; set; }\r\n\r\n"); - #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 61 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasInterfaces) { #line default @@ -324,7 +331,7 @@ public virtual string TransformText() this.Write(" [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; }\r" + "\n"); - #line 63 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 64 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt index 22a581d8..0c28e404 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt @@ -53,6 +53,7 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// <# } #> [JsonPropertyName("<#= field.Name #>")] + [GraphQLMember("<#= field.Name #>")] public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> { get; set; } <# } #> diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs new file mode 100644 index 00000000..b31ac701 --- /dev/null +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs @@ -0,0 +1,102 @@ +//--------------------------------------------------------------------- +// This code was automatically generated by Linq2GraphQL +// Please don't edit this file +// Github:https://github.com/linq2graphql/linq2graphql.client +// Url: https://linq2graphql.com +//--------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; +using Linq2GraphQL.Client; + +namespace Linq2GraphQL.TestClient; + +[JsonConverter(typeof(GraphInputConverter))] +public partial class ByteOperationFilterInput : GraphInputBase +{ + [JsonPropertyName("eq")] + public byte? Eq + { + get => GetValue("eq"); + set => SetValue("eq", value); + } + + [JsonPropertyName("neq")] + public byte? Neq + { + get => GetValue("neq"); + set => SetValue("neq", value); + } + + [JsonPropertyName("in")] + public List In + { + get => GetValue>("in"); + set => SetValue("in", value); + } + + [JsonPropertyName("nin")] + public List Nin + { + get => GetValue>("nin"); + set => SetValue("nin", value); + } + + [JsonPropertyName("gt")] + public byte? Gt + { + get => GetValue("gt"); + set => SetValue("gt", value); + } + + [JsonPropertyName("ngt")] + public byte? Ngt + { + get => GetValue("ngt"); + set => SetValue("ngt", value); + } + + [JsonPropertyName("gte")] + public byte? Gte + { + get => GetValue("gte"); + set => SetValue("gte", value); + } + + [JsonPropertyName("ngte")] + public byte? Ngte + { + get => GetValue("ngte"); + set => SetValue("ngte", value); + } + + [JsonPropertyName("lt")] + public byte? Lt + { + get => GetValue("lt"); + set => SetValue("lt", value); + } + + [JsonPropertyName("nlt")] + public byte? Nlt + { + get => GetValue("nlt"); + set => SetValue("nlt", value); + } + + [JsonPropertyName("lte")] + public byte? Lte + { + get => GetValue("lte"); + set => SetValue("lte", value); + } + + [JsonPropertyName("nlte")] + public byte? Nlte + { + get => GetValue("nlte"); + set => SetValue("nlte", value); + } + +} \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs index f2d4b3aa..63f08d54 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs @@ -26,6 +26,10 @@ public static AddressSortInput AddressSort() { return new AddressSortInput(); } + public static ByteOperationFilterInput ByteOperationFilter() + { + return new ByteOperationFilterInput(); + } public static CustomerFilterInput CustomerFilter() { return new CustomerFilterInput(); @@ -74,6 +78,10 @@ public static ItemInput Item() { return new ItemInput(); } + public static ListByteOperationFilterInput ListByteOperationFilter() + { + return new ListByteOperationFilterInput(); + } public static ListFilterInputTypeOfOrderFilterInput ListFilterInputTypeOfOrderFilter() { return new ListFilterInputTypeOfOrderFilterInput(); @@ -217,6 +225,94 @@ public static AddressSortInput PostalCode(this AddressSortInput input, SortEnumT } +public static class ByteOperationFilterInputExtensions +{ + + public static ByteOperationFilterInput Eq(this ByteOperationFilterInput input, byte? val) + { + input.Eq = val; + return input; + } + + + public static ByteOperationFilterInput Neq(this ByteOperationFilterInput input, byte? val) + { + input.Neq = val; + return input; + } + + + public static ByteOperationFilterInput In(this ByteOperationFilterInput input, List val) + { + input.In = val; + return input; + } + + + public static ByteOperationFilterInput Nin(this ByteOperationFilterInput input, List val) + { + input.Nin = val; + return input; + } + + + public static ByteOperationFilterInput Gt(this ByteOperationFilterInput input, byte? val) + { + input.Gt = val; + return input; + } + + + public static ByteOperationFilterInput Ngt(this ByteOperationFilterInput input, byte? val) + { + input.Ngt = val; + return input; + } + + + public static ByteOperationFilterInput Gte(this ByteOperationFilterInput input, byte? val) + { + input.Gte = val; + return input; + } + + + public static ByteOperationFilterInput Ngte(this ByteOperationFilterInput input, byte? val) + { + input.Ngte = val; + return input; + } + + + public static ByteOperationFilterInput Lt(this ByteOperationFilterInput input, byte? val) + { + input.Lt = val; + return input; + } + + + public static ByteOperationFilterInput Nlt(this ByteOperationFilterInput input, byte? val) + { + input.Nlt = val; + return input; + } + + + public static ByteOperationFilterInput Lte(this ByteOperationFilterInput input, byte? val) + { + input.Lte = val; + return input; + } + + + public static ByteOperationFilterInput Nlte(this ByteOperationFilterInput input, byte? val) + { + input.Nlte = val; + return input; + } + +} + public static class CustomerFilterInputExtensions { public static CustomerFilterInput And(this CustomerFilterInput input, Action> mod) @@ -841,6 +937,15 @@ public static ItemFilterInput ItemName(this ItemFilterInput input, Action mod) + { + var filter = new ListByteOperationFilterInput(); + mod ??= _ => { }; + mod(filter); + input.Data = filter; + return input; + } + } public static class ItemInputExtensions @@ -859,6 +964,51 @@ public static ItemInput ItemName(this ItemInput input, string val) return input; } + + public static ItemInput Data(this ItemInput input, List val) + { + input.Data = val; + return input; + } + +} + +public static class ListByteOperationFilterInputExtensions +{ + public static ListByteOperationFilterInput All(this ListByteOperationFilterInput input, Action mod) + { + var filter = new ByteOperationFilterInput(); + mod ??= _ => { }; + mod(filter); + input.All = filter; + return input; + } + + public static ListByteOperationFilterInput None(this ListByteOperationFilterInput input, Action mod) + { + var filter = new ByteOperationFilterInput(); + mod ??= _ => { }; + mod(filter); + input.None = filter; + return input; + } + + public static ListByteOperationFilterInput Some(this ListByteOperationFilterInput input, Action mod) + { + var filter = new ByteOperationFilterInput(); + mod ??= _ => { }; + mod(filter); + input.Some = filter; + return input; + } + + + public static ListByteOperationFilterInput Any(this ListByteOperationFilterInput input, bool? val) + { + input.Any = val; + return input; + } + } public static class ListFilterInputTypeOfOrderFilterInputExtensions diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs index f288e372..51cd15bc 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs @@ -43,4 +43,11 @@ public StringOperationFilterInput ItemName set => SetValue("itemName", value); } + [JsonPropertyName("data")] + public ListByteOperationFilterInput Data + { + get => GetValue("data"); + set => SetValue("data", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs index de04c6a2..530ec282 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs @@ -29,4 +29,11 @@ public string ItemName set => SetValue("itemName", value); } + [JsonPropertyName("data")] + public List Data + { + get => GetValue>("data"); + set => SetValue("data", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs new file mode 100644 index 00000000..cd5d0f36 --- /dev/null +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------- +// This code was automatically generated by Linq2GraphQL +// Please don't edit this file +// Github:https://github.com/linq2graphql/linq2graphql.client +// Url: https://linq2graphql.com +//--------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; +using Linq2GraphQL.Client; + +namespace Linq2GraphQL.TestClient; + +[JsonConverter(typeof(GraphInputConverter))] +public partial class ListByteOperationFilterInput : GraphInputBase +{ + [JsonPropertyName("all")] + public ByteOperationFilterInput All + { + get => GetValue("all"); + set => SetValue("all", value); + } + + [JsonPropertyName("none")] + public ByteOperationFilterInput None + { + get => GetValue("none"); + set => SetValue("none", value); + } + + [JsonPropertyName("some")] + public ByteOperationFilterInput Some + { + get => GetValue("some"); + set => SetValue("some", value); + } + + [JsonPropertyName("any")] + public bool? Any + { + get => GetValue("any"); + set => SetValue("any", value); + } + +} \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs index d88d1934..61fc1f2f 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClient; public partial class Address : GraphQLTypeBase { [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get; set; } [JsonPropertyName("street")] + [GraphQLMember("street")] public string Street { get; set; } [JsonPropertyName("postalCode")] + [GraphQLMember("postalCode")] public string PostalCode { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs index 23593c72..4a98f31a 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs @@ -23,24 +23,28 @@ public partial class AnimalsConnection : GraphQLTypeBase, Linq2GraphQL.Client.Co /// Information to aid in pagination. /// [JsonPropertyName("pageInfo")] + [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [JsonPropertyName("edges")] + [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [JsonPropertyName("nodes")] + [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [JsonPropertyName("totalCount")] + [GraphQLMember("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs index e57747a6..a58127eb 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs @@ -23,12 +23,14 @@ public partial class AnimalsEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [JsonPropertyName("cursor")] + [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [JsonPropertyName("node")] + [GraphQLMember("node")] public IAnimal Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs index 7b954630..90d36038 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs @@ -23,12 +23,14 @@ public partial class CollectionSegmentInfo : GraphQLTypeBase /// Indicates whether more items exist following the set defined by the clients arguments. /// [JsonPropertyName("hasNextPage")] + [GraphQLMember("hasNextPage")] public bool HasNextPage { get; set; } /// /// Indicates whether more items exist prior the set defined by the clients arguments. /// [JsonPropertyName("hasPreviousPage")] + [GraphQLMember("hasPreviousPage")] public bool HasPreviousPage { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs index 9990953c..fda87aa7 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClient; public partial class Customer : GraphQLTypeBase { [JsonPropertyName("customerId")] + [GraphQLMember("customerId")] public Guid CustomerId { get; set; } [JsonPropertyName("customerName")] + [GraphQLMember("customerName")] public string CustomerName { get; set; } [JsonPropertyName("status")] + [GraphQLMember("status")] public CustomerStatus Status { get; set; } [JsonPropertyName("orders")] + [GraphQLMember("orders")] public List Orders { get; set; } [JsonPropertyName("address")] + [GraphQLMember("address")] public Address Address { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs index d4dd7206..76ffc15b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs @@ -17,9 +17,15 @@ namespace Linq2GraphQL.TestClient; public partial class Item : GraphQLTypeBase { [JsonPropertyName("itemId")] + [GraphQLMember("itemId")] public string ItemId { get; set; } [JsonPropertyName("itemName")] + [GraphQLMember("itemName")] public string ItemName { get; set; } + [JsonPropertyName("data")] + [GraphQLMember("data")] + public List Data { get; set; } + } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs index 2665e4bc..845283d2 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; +using System.Runtime.ExceptionServices; using System.Text.Json.Serialization; using Linq2GraphQL.Client; using Linq2GraphQL.Client.Common; @@ -17,13 +18,15 @@ namespace Linq2GraphQL.TestClient; public static class OrderExtensions { [GraphMethod("orderHello")] - public static string OrderHello(this Order order, [GraphArgument("String!")] string name, [GraphArgument("Int!")] int first) + [GraphQLMember("orderHello")] + public static string OrderHello(this Order order, [GraphQLArgument("name", "String!")] string name, [GraphQLArgument("first", "Int!")] int first) { return order.GetMethodValue("orderHello", name, first); } [GraphMethod("orderAddress")] - public static Address OrderAddress(this Order order, [GraphArgument("AddressType!")] AddressType addressType) + [GraphQLMember("orderAddress")] + public static Address OrderAddress(this Order order, [GraphQLArgument("addressType", "AddressType!")] AddressType addressType) { return order.GetMethodValue
("orderAddress", addressType); } @@ -47,21 +50,27 @@ public partial class Order : GraphQLTypeBase public Address OrderAddress => _orderAddress.Value(() => GetFirstMethodValue
("orderAddress")); [JsonPropertyName("orderId")] + [GraphQLMember("orderId")] public Guid OrderId { get; set; } [JsonPropertyName("customer")] + [GraphQLMember("customer")] public Customer Customer { get; set; } [JsonPropertyName("address")] + [GraphQLMember("address")] public Address Address { get; set; } [JsonPropertyName("orderDate")] + [GraphQLMember("orderDate")] public DateTimeOffset OrderDate { get; set; } [JsonPropertyName("lines")] + [GraphQLMember("lines")] public List Lines { get; set; } [JsonPropertyName("entryTime")] + [GraphQLMember("entryTime")] public TimeSpan? EntryTime { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs index 0780f4d3..dc881f8b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClient; public partial class OrderLine : GraphQLTypeBase { [JsonPropertyName("lineNumber")] + [GraphQLMember("lineNumber")] public int LineNumber { get; set; } [JsonPropertyName("order")] + [GraphQLMember("order")] public Order Order { get; set; } [JsonPropertyName("item")] + [GraphQLMember("item")] public Item Item { get; set; } [JsonPropertyName("price")] + [GraphQLMember("price")] public decimal Price { get; set; } [JsonPropertyName("quantity")] + [GraphQLMember("quantity")] public double Quantity { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs index ec5e9910..74ebfeff 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs @@ -23,24 +23,28 @@ public partial class OrdersConnection : GraphQLTypeBase, Linq2GraphQL.Client.Com /// Information to aid in pagination. /// [JsonPropertyName("pageInfo")] + [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [JsonPropertyName("edges")] + [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [JsonPropertyName("nodes")] + [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [JsonPropertyName("totalCount")] + [GraphQLMember("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs index c1e6abd2..4fbecb73 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [JsonPropertyName("cursor")] + [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [JsonPropertyName("node")] + [GraphQLMember("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs index 2804a253..81be96aa 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs @@ -23,24 +23,28 @@ public partial class OrdersNoBackwardPaginationConnection : GraphQLTypeBase, Lin /// Information to aid in pagination. /// [JsonPropertyName("pageInfo")] + [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [JsonPropertyName("edges")] + [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [JsonPropertyName("nodes")] + [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [JsonPropertyName("totalCount")] + [GraphQLMember("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs index 915963fd..0ac2f5bd 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersNoBackwardPaginationEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [JsonPropertyName("cursor")] + [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [JsonPropertyName("node")] + [GraphQLMember("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs index ccc5a80d..6a996db4 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs @@ -23,18 +23,21 @@ public partial class OrdersNoTotalCountConnection : GraphQLTypeBase, Linq2GraphQ /// Information to aid in pagination. /// [JsonPropertyName("pageInfo")] + [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [JsonPropertyName("edges")] + [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [JsonPropertyName("nodes")] + [GraphQLMember("nodes")] public List Nodes { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs index b86272b9..e4620c59 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersNoTotalCountEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [JsonPropertyName("cursor")] + [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [JsonPropertyName("node")] + [GraphQLMember("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs index 05d99661..cb0740d2 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs @@ -23,15 +23,18 @@ public partial class OrdersOffsetPagingCollectionSegment : GraphQLTypeBase /// Information to aid in pagination. /// [JsonPropertyName("pageInfo")] + [GraphQLMember("pageInfo")] public CollectionSegmentInfo PageInfo { get; set; } /// /// A flattened list of the items. /// [JsonPropertyName("items")] + [GraphQLMember("items")] public List Items { get; set; } [JsonPropertyName("totalCount")] + [GraphQLMember("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs index a59e9008..9bbc3b17 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs @@ -17,15 +17,19 @@ namespace Linq2GraphQL.TestClient; public partial class Pig : GraphQLTypeBase, IAnimal { [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get; set; } [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } [JsonPropertyName("speed")] + [GraphQLMember("speed")] public int Speed { get; set; } [JsonPropertyName("spices")] + [GraphQLMember("spices")] public string Spices { get; set; } [JsonPropertyName("__typename")] diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs index 7dfdd752..b37cce63 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs @@ -17,15 +17,19 @@ namespace Linq2GraphQL.TestClient; public partial class Spider : GraphQLTypeBase, IAnimal { [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get; set; } [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } [JsonPropertyName("speed")] + [GraphQLMember("speed")] public int Speed { get; set; } [JsonPropertyName("poisonous")] + [GraphQLMember("poisonous")] public bool Poisonous { get; set; } [JsonPropertyName("__typename")] diff --git a/test/Linq2GraphQL.Tests/QueryIncludeTests.cs b/test/Linq2GraphQL.Tests/QueryIncludeTests.cs index 8e74cff9..2de0a377 100644 --- a/test/Linq2GraphQL.Tests/QueryIncludeTests.cs +++ b/test/Linq2GraphQL.Tests/QueryIncludeTests.cs @@ -1,4 +1,5 @@ -using Linq2GraphQL.TestClient; +using HotChocolate.Execution; +using Linq2GraphQL.TestClient; namespace Linq2GraphQL.Tests; @@ -32,10 +33,12 @@ public async Task IncludePrimitives_MultipleLevels() var query = sampleClient .Query .Orders(first: 1) - .Include(e => e.Nodes.Select(e => e.Customer)) + .Include(e => e.Nodes.Select(e => e.Customer)) .Include(e => e.Nodes.Select(e => e.Customer.Orders)) .Select(e => e.Nodes); + var req = await query.GetRequestAsync(); + var result = await query.ExecuteAsync(); @@ -66,6 +69,7 @@ public async Task IncludePrimitives_AnomousResult() } })); + var q = await query.GetRequestAsync(); var order = (await query.ExecuteAsync()).First(); diff --git a/test/Linq2GraphQL.Tests/QueryPagingTests.cs b/test/Linq2GraphQL.Tests/QueryPagingTests.cs index 57e7821a..16e4f822 100644 --- a/test/Linq2GraphQL.Tests/QueryPagingTests.cs +++ b/test/Linq2GraphQL.Tests/QueryPagingTests.cs @@ -65,9 +65,9 @@ public async Task Orders_Paging() .Query .Orders() .Include(e => e.TotalCount) - .Include(e => e.Nodes.Select(e => e.Customer.Orders)) + //.Include(e => e.Nodes.Select(e => e.Customer.Orders)) - .Select(e => e.Nodes.Select(e => new { e.OrderId, Customer = new { e.Customer.CustomerName, e.Customer.Orders} })) + .Select(e => e.Nodes.Select(e => new { e.OrderId })) .AsPager(); var firstPage = await pager.NextPageAsync(); From 5db88cc9f5675d735fb252294fb5930b259583a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 9 Jan 2025 14:18:25 +0100 Subject: [PATCH 2/8] Update Templates --- .../GraphQLSchema/RootSchema.cs | 13 +------ .../Templates/Class/ClassTemplate.cs | 38 +++++++++---------- .../Templates/Class/ClassTemplate.tt | 3 +- .../Templates/Class/InputClassTemplate.cs | 2 +- .../Templates/Class/InputClassTemplate.tt | 2 +- .../Templates/Interface/InterfaceTemplate.cs | 12 +++--- .../Templates/Interface/InterfaceTemplate.tt | 8 ++-- 7 files changed, 33 insertions(+), 45 deletions(-) diff --git a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs index dc917ecb..10acb58b 100644 --- a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs +++ b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs @@ -136,17 +136,6 @@ public class BaseField public BaseType Type { get; set; } - - //private TypeInfo fieldInfo; - //public TypeInfo FieldInfo - //{ - // get - // { - // fieldInfo ??= GetFieldTypeInfo(); - // return fieldInfo; - // } - //} - private CoreType coreType; public CoreType CoreType { @@ -202,7 +191,7 @@ public string GetArgString(bool addTypeAttribute) if (addTypeAttribute) { result += - $"[GraphArgument(\"{arg.CoreType.GraphQLTypeDefinition}\")] {arg.CoreType.CSharpTypeDefinition} {arg.Name.ToCamelCase()}"; + $"[GraphQLArgument(\"{arg.Name}\", \"{arg.CoreType.GraphQLTypeDefinition}\")] {arg.CoreType.CSharpTypeDefinition} {arg.Name.ToCamelCase()}"; } else { diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs index b022a92b..d73b93e5 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs @@ -69,7 +69,7 @@ public virtual string TransformText() #line default #line hidden - this.Write(" [GraphMethod(\""); + this.Write(" [GraphQLMember(\""); #line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); @@ -219,111 +219,111 @@ public virtual string TransformText() #line default #line hidden this.Write(" = new();\r\n /// \r\n /// Do not use in Query, only to retrive result" + - "\r\n /// \r\n [GraphShadowProperty]\r\n public "); + "\r\n /// \r\n public "); - #line 47 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(" "); - #line 47 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" => _"); - #line 47 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write(".Value(() => GetFirstMethodValue<"); - #line 47 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(">(\""); - #line 47 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\"));\r\n\r\n"); - #line 49 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 48 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } else { #line default #line hidden - #line 50 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 49 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (field.HasDescription) { #line default #line hidden this.Write(" /// \r\n /// "); - #line 52 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 51 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Description)); #line default #line hidden this.Write("\r\n /// \r\n"); - #line 54 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 53 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden this.Write(" [JsonPropertyName(\""); - #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 54 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\")]\r\n [GraphQLMember(\""); - #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\")]\r\n public "); - #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(" "); - #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" { get; set; }\r\n\r\n"); - #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 61 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasInterfaces) { #line default @@ -331,7 +331,7 @@ public virtual string TransformText() this.Write(" [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; }\r" + "\n"); - #line 64 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 63 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt index 0c28e404..b1493bde 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt @@ -16,7 +16,7 @@ namespace <#= namespaceName #>; public static class <#= classType.Name #>Extensions { <# foreach (var field in classType.AllFields.Where(e => e.IsMethod)) { #> - [GraphMethod("<#= field.Name #>")] + [GraphQLMember("<#= field.Name #>")] public static <#= GetFieldCSharpName(field) #> <#= field.CSharpName #>(this <#= classType.Name #> <#= classType.Name.ToCamelCase() #>, <#= field.GetArgString(true) #>) { return <#= classType.Name.ToCamelCase() #>.GetMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>", <#= field.GetArgNames() #>); @@ -43,7 +43,6 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// /// Do not use in Query, only to retrive result /// - [GraphShadowProperty] public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> => _<#= field.Name #>.Value(() => GetFirstMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>")); <# } else { #> diff --git a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs index 90cf35e8..30019387 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs @@ -58,7 +58,7 @@ public virtual string TransformText() #line default #line hidden - this.Write("\t[JsonPropertyName(\""); + this.Write("\t[GraphQLMember(\""); #line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); diff --git a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt index 0b9f6a94..459357af 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt @@ -15,7 +15,7 @@ public partial class <#= classType.Name #> : GraphInputBase { var coreType = field.CoreType; #> - [JsonPropertyName("<#= field.Name #>")] + [GraphQLMember("<#= field.Name #>")] public <#= GetPropertyDefinition(field) #> <#= field.CSharpName #> { get => GetValue<<#= coreType.CSharpTypeDefinition #>>("<#= field.Name #>"); diff --git a/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.cs index beceaa3a..45395c5c 100644 --- a/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.cs @@ -178,7 +178,7 @@ public virtual string TransformText() #line default #line hidden - this.Write("\t[JsonPropertyName(\""); + this.Write("\t[GraphQLMember(\""); #line 52 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Interface\InterfaceTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); @@ -208,8 +208,8 @@ public virtual string TransformText() #line default #line hidden - this.Write(" [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; }\r" + - "\n\r\n}\r\n\r\ninternal class "); + this.Write(" [GraphQLMember(\"__typename\")]\r\n public string __TypeName { get; set; }\r\n\r\n" + + "}\r\n\r\ninternal class "); #line 62 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Interface\InterfaceTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetInterfaceConcreteName())); @@ -234,7 +234,7 @@ public virtual string TransformText() #line default #line hidden - this.Write("\t[JsonPropertyName(\""); + this.Write("\t[GraphQLMember(\""); #line 69 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Interface\InterfaceTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); @@ -264,8 +264,8 @@ public virtual string TransformText() #line default #line hidden - this.Write("\r\n [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; " + - "}\r\n\r\n}"); + this.Write("\r\n [GraphQLMember(\"__typename\")]\r\n public string __TypeName { get; set; }\r\n" + + "\r\n}"); return this.GenerationEnvironment.ToString(); } } diff --git a/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.tt index 82c11b96..d81e2d17 100644 --- a/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Interface/InterfaceTemplate.tt @@ -49,12 +49,12 @@ public interface <#= classType.Name #> <#= classType.GetInterfacesString() #> { var coreType = field.CoreType; #> - [JsonPropertyName("<#= field.Name #>")] + [GraphQLMember("<#= field.Name #>")] public <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; } <# } #> - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } @@ -66,13 +66,13 @@ internal class <#= GetInterfaceConcreteName() #> : <#= classType.Name #> { var coreType = field.CoreType; #> - [JsonPropertyName("<#= field.Name #>")] + [GraphQLMember("<#= field.Name #>")] public <#= coreType.CSharpTypeDefinition #> <#= field.CSharpName #> { get; set; } <# } #> - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } \ No newline at end of file From 4c02542712bfbfbc9d6ade9b0eceeddcfd351577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 9 Jan 2025 15:09:10 +0100 Subject: [PATCH 3/8] Fix --- src/Linq2GraphQL.Client/QueryNode.cs | 18 ++++++++------ .../Templates/Class/ClassTemplate.cs | 24 +++++++------------ .../Templates/Class/ClassTemplate.tt | 3 +-- .../Generated/Inputs/AddressFilterInput.cs | 10 ++++---- .../Generated/Inputs/AddressInput.cs | 6 ++--- .../Generated/Inputs/AddressSortInput.cs | 6 ++--- .../Inputs/ByteOperationFilterInput.cs | 24 +++++++++---------- .../Generated/Inputs/CustomerFilterInput.cs | 14 +++++------ .../Generated/Inputs/CustomerInput.cs | 10 ++++---- .../Generated/Inputs/CustomerSortInput.cs | 8 +++---- .../CustomerStatusOperationFilterInput.cs | 8 +++---- .../Inputs/DateTimeOperationFilterInput.cs | 24 +++++++++---------- .../Inputs/DecimalOperationFilterInput.cs | 24 +++++++++---------- .../Inputs/FloatOperationFilterInput.cs | 24 +++++++++---------- .../Generated/Inputs/IAnimalFilterInput.cs | 8 +++---- .../Generated/Inputs/IAnimalSortInput.cs | 4 ++-- .../Inputs/IntOperationFilterInput.cs | 24 +++++++++---------- .../Generated/Inputs/ItemFilterInput.cs | 10 ++++---- .../Generated/Inputs/ItemInput.cs | 6 ++--- .../Inputs/ListByteOperationFilterInput.cs | 8 +++---- .../ListFilterInputTypeOfOrderFilterInput.cs | 8 +++---- ...stFilterInputTypeOfOrderLineFilterInput.cs | 8 +++---- .../Generated/Inputs/OrderFilterInput.cs | 16 ++++++------- .../Generated/Inputs/OrderInput.cs | 12 +++++----- .../Generated/Inputs/OrderLineFilterInput.cs | 14 +++++------ .../Generated/Inputs/OrderLineInput.cs | 10 ++++---- .../Generated/Inputs/OrderSortInput.cs | 10 ++++---- .../Inputs/StringOperationFilterInput.cs | 24 +++++++++---------- .../Inputs/TimeSpanOperationFilterInput.cs | 24 +++++++++---------- .../Inputs/UuidOperationFilterInput.cs | 24 +++++++++---------- .../Generated/Interfaces/IAnimal.cs | 12 +++++----- .../Generated/Types/Address.cs | 3 --- .../Generated/Types/AnimalsConnection.cs | 4 ---- .../Generated/Types/AnimalsEdge.cs | 2 -- .../Generated/Types/CollectionSegmentInfo.cs | 2 -- .../Generated/Types/Customer.cs | 5 ---- .../Generated/Types/Item.cs | 3 --- .../Generated/Types/Order.cs | 11 --------- .../Generated/Types/OrderLine.cs | 5 ---- .../Generated/Types/OrdersConnection.cs | 4 ---- .../Generated/Types/OrdersEdge.cs | 2 -- .../OrdersNoBackwardPaginationConnection.cs | 4 ---- .../Types/OrdersNoBackwardPaginationEdge.cs | 2 -- .../Types/OrdersNoTotalCountConnection.cs | 3 --- .../Generated/Types/OrdersNoTotalCountEdge.cs | 2 -- .../OrdersOffsetPagingCollectionSegment.cs | 3 --- .../Generated/Types/Pig.cs | 6 +---- .../Generated/Types/Spider.cs | 6 +---- 48 files changed, 212 insertions(+), 280 deletions(-) diff --git a/src/Linq2GraphQL.Client/QueryNode.cs b/src/Linq2GraphQL.Client/QueryNode.cs index 2986b656..1cc458e9 100644 --- a/src/Linq2GraphQL.Client/QueryNode.cs +++ b/src/Linq2GraphQL.Client/QueryNode.cs @@ -14,7 +14,7 @@ public class QueryNode public QueryNode(MemberInfo member, string name = null, List arguments = null, bool interfaceProperty = false, bool topLevel = false) { - Name = name ?? member.GetCustomAttribute()?.Name ?? member.Name.ToCamelCase(); + Name = name ?? member.GetCustomAttribute()?.GraphQLName ?? member.Name.ToCamelCase(); Member = member; Arguments = arguments ?? new List(); underlyingMemberType = member.GetUnderlyingType(); @@ -130,23 +130,27 @@ public void AddPrimitiveChildren(bool recursive, GraphQLSchema schema) var typeOrListType = underlyingMemberType.GetTypeOrListType(); foreach (var propertyInfo in typeOrListType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { - if (propertyInfo.GetCustomAttribute() != null) + + + + if (!propertyInfo.PropertyType.IsValueTypeOrString()) { continue; } - if (!propertyInfo.PropertyType.IsValueTypeOrString() || propertyInfo.GetCustomAttribute() != null) + + var memberAttribute = propertyInfo.GetCustomAttribute(); + if (memberAttribute == null) { continue; } + if (schema != null) { - var name = propertyInfo.GetCustomAttribute()?.Name ?? - Member.Name.ToCamelCase(); - if (schema.TypePropertyExists(typeOrListType.Name, name)) + if (schema.TypePropertyExists(typeOrListType.Name, memberAttribute.GraphQLName)) { - AddChildNode(propertyInfo, name); + AddChildNode(propertyInfo, memberAttribute.GraphQLName); } else { diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs index d73b93e5..f64b7b80 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs @@ -281,57 +281,49 @@ public virtual string TransformText() #line default #line hidden - this.Write(" [JsonPropertyName(\""); + this.Write(" [GraphQLMember(\""); #line 54 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); - #line default - #line hidden - this.Write("\")]\r\n [GraphQLMember(\""); - - #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" - this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); - #line default #line hidden this.Write("\")]\r\n public "); - #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(" "); - #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" { get; set; }\r\n\r\n"); - #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasInterfaces) { #line default #line hidden - this.Write(" [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; }\r" + - "\n"); + this.Write(" [GraphQLMember(\"__typename\")]\r\n public string __TypeName { get; set; }\r\n"); - #line 63 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 62 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt index b1493bde..31c45c41 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt @@ -51,14 +51,13 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// <#= field.Description #> /// <# } #> - [JsonPropertyName("<#= field.Name #>")] [GraphQLMember("<#= field.Name #>")] public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> { get; set; } <# } #> <# } #> <# if (classType.HasInterfaces) { #> - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } <# } #> } diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs index dea2936e..d24cd3cf 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs @@ -15,35 +15,35 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class AddressFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("name")] + [GraphQLMember("name")] public StringOperationFilterInput Name { get => GetValue("name"); set => SetValue("name", value); } - [JsonPropertyName("street")] + [GraphQLMember("street")] public StringOperationFilterInput Street { get => GetValue("street"); set => SetValue("street", value); } - [JsonPropertyName("postalCode")] + [GraphQLMember("postalCode")] public StringOperationFilterInput PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs index 411279a6..c2259791 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs @@ -15,21 +15,21 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class AddressInput : GraphInputBase { - [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get => GetValue("name"); set => SetValue("name", value); } - [JsonPropertyName("street")] + [GraphQLMember("street")] public string Street { get => GetValue("street"); set => SetValue("street", value); } - [JsonPropertyName("postalCode")] + [GraphQLMember("postalCode")] public string PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs index e59a24b3..5bda02d9 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs @@ -15,21 +15,21 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class AddressSortInput : GraphInputBase { - [JsonPropertyName("name")] + [GraphQLMember("name")] public SortEnumType? Name { get => GetValue("name"); set => SetValue("name", value); } - [JsonPropertyName("street")] + [GraphQLMember("street")] public SortEnumType? Street { get => GetValue("street"); set => SetValue("street", value); } - [JsonPropertyName("postalCode")] + [GraphQLMember("postalCode")] public SortEnumType? PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs index b31ac701..b8871498 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ByteOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public byte? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public byte? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public byte? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public byte? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public byte? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public byte? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public byte? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public byte? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public byte? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public byte? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs index 7c6808c9..bc61bd06 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs @@ -15,49 +15,49 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class CustomerFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("customerId")] + [GraphQLMember("customerId")] public UuidOperationFilterInput CustomerId { get => GetValue("customerId"); set => SetValue("customerId", value); } - [JsonPropertyName("customerName")] + [GraphQLMember("customerName")] public StringOperationFilterInput CustomerName { get => GetValue("customerName"); set => SetValue("customerName", value); } - [JsonPropertyName("status")] + [GraphQLMember("status")] public CustomerStatusOperationFilterInput Status { get => GetValue("status"); set => SetValue("status", value); } - [JsonPropertyName("orders")] + [GraphQLMember("orders")] public ListFilterInputTypeOfOrderFilterInput Orders { get => GetValue("orders"); set => SetValue("orders", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressFilterInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs index 95f9e7ed..f87ede24 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs @@ -15,35 +15,35 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class CustomerInput : GraphInputBase { - [JsonPropertyName("customerId")] + [GraphQLMember("customerId")] public Guid CustomerId { get => GetValue("customerId"); set => SetValue("customerId", value); } - [JsonPropertyName("customerName")] + [GraphQLMember("customerName")] public string CustomerName { get => GetValue("customerName"); set => SetValue("customerName", value); } - [JsonPropertyName("status")] + [GraphQLMember("status")] public CustomerStatus Status { get => GetValue("status"); set => SetValue("status", value); } - [JsonPropertyName("orders")] + [GraphQLMember("orders")] public List Orders { get => GetValue>("orders"); set => SetValue("orders", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs index bea06419..96c87b51 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class CustomerSortInput : GraphInputBase { - [JsonPropertyName("customerId")] + [GraphQLMember("customerId")] public SortEnumType? CustomerId { get => GetValue("customerId"); set => SetValue("customerId", value); } - [JsonPropertyName("customerName")] + [GraphQLMember("customerName")] public SortEnumType? CustomerName { get => GetValue("customerName"); set => SetValue("customerName", value); } - [JsonPropertyName("status")] + [GraphQLMember("status")] public SortEnumType? Status { get => GetValue("status"); set => SetValue("status", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressSortInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs index e75f1cd6..8c945a51 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class CustomerStatusOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public CustomerStatus? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public CustomerStatus? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs index 92bb4c8b..4c793c35 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class DateTimeOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public DateTimeOffset? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public DateTimeOffset? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public DateTimeOffset? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public DateTimeOffset? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public DateTimeOffset? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public DateTimeOffset? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public DateTimeOffset? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public DateTimeOffset? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public DateTimeOffset? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public DateTimeOffset? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs index dac4f3dd..5b53566e 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class DecimalOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public decimal? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public decimal? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public decimal? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public decimal? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public decimal? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public decimal? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public decimal? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public decimal? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public decimal? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public decimal? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs index abc03cbb..d636546d 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class FloatOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public double? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public double? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public double? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public double? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public double? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public double? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public double? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public double? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public double? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public double? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs index 2047475c..7acdd61d 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class IAnimalFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("name")] + [GraphQLMember("name")] public StringOperationFilterInput Name { get => GetValue("name"); set => SetValue("name", value); } - [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public IntOperationFilterInput NumberOfLegs { get => GetValue("numberOfLegs"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs index 6afaa402..58794f1b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs @@ -15,14 +15,14 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class IAnimalSortInput : GraphInputBase { - [JsonPropertyName("name")] + [GraphQLMember("name")] public SortEnumType? Name { get => GetValue("name"); set => SetValue("name", value); } - [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public SortEnumType? NumberOfLegs { get => GetValue("numberOfLegs"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs index 5dbeb704..0bcb0cdd 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class IntOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public int? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public int? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public int? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public int? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public int? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public int? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public int? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public int? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public int? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public int? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs index 51cd15bc..f681fbbd 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs @@ -15,35 +15,35 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ItemFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("itemId")] + [GraphQLMember("itemId")] public StringOperationFilterInput ItemId { get => GetValue("itemId"); set => SetValue("itemId", value); } - [JsonPropertyName("itemName")] + [GraphQLMember("itemName")] public StringOperationFilterInput ItemName { get => GetValue("itemName"); set => SetValue("itemName", value); } - [JsonPropertyName("data")] + [GraphQLMember("data")] public ListByteOperationFilterInput Data { get => GetValue("data"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs index 530ec282..374c6ad9 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs @@ -15,21 +15,21 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ItemInput : GraphInputBase { - [JsonPropertyName("itemId")] + [GraphQLMember("itemId")] public string ItemId { get => GetValue("itemId"); set => SetValue("itemId", value); } - [JsonPropertyName("itemName")] + [GraphQLMember("itemName")] public string ItemName { get => GetValue("itemName"); set => SetValue("itemName", value); } - [JsonPropertyName("data")] + [GraphQLMember("data")] public List Data { get => GetValue>("data"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs index cd5d0f36..1082c2a4 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ListByteOperationFilterInput : GraphInputBase { - [JsonPropertyName("all")] + [GraphQLMember("all")] public ByteOperationFilterInput All { get => GetValue("all"); set => SetValue("all", value); } - [JsonPropertyName("none")] + [GraphQLMember("none")] public ByteOperationFilterInput None { get => GetValue("none"); set => SetValue("none", value); } - [JsonPropertyName("some")] + [GraphQLMember("some")] public ByteOperationFilterInput Some { get => GetValue("some"); set => SetValue("some", value); } - [JsonPropertyName("any")] + [GraphQLMember("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs index d343971d..3ffd25aa 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ListFilterInputTypeOfOrderFilterInput : GraphInputBase { - [JsonPropertyName("all")] + [GraphQLMember("all")] public OrderFilterInput All { get => GetValue("all"); set => SetValue("all", value); } - [JsonPropertyName("none")] + [GraphQLMember("none")] public OrderFilterInput None { get => GetValue("none"); set => SetValue("none", value); } - [JsonPropertyName("some")] + [GraphQLMember("some")] public OrderFilterInput Some { get => GetValue("some"); set => SetValue("some", value); } - [JsonPropertyName("any")] + [GraphQLMember("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs index f08e93eb..f81d158b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs @@ -15,28 +15,28 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class ListFilterInputTypeOfOrderLineFilterInput : GraphInputBase { - [JsonPropertyName("all")] + [GraphQLMember("all")] public OrderLineFilterInput All { get => GetValue("all"); set => SetValue("all", value); } - [JsonPropertyName("none")] + [GraphQLMember("none")] public OrderLineFilterInput None { get => GetValue("none"); set => SetValue("none", value); } - [JsonPropertyName("some")] + [GraphQLMember("some")] public OrderLineFilterInput Some { get => GetValue("some"); set => SetValue("some", value); } - [JsonPropertyName("any")] + [GraphQLMember("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs index 820cfc6d..f6336de5 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs @@ -15,56 +15,56 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("orderId")] + [GraphQLMember("orderId")] public UuidOperationFilterInput OrderId { get => GetValue("orderId"); set => SetValue("orderId", value); } - [JsonPropertyName("customer")] + [GraphQLMember("customer")] public CustomerFilterInput Customer { get => GetValue("customer"); set => SetValue("customer", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressFilterInput Address { get => GetValue("address"); set => SetValue("address", value); } - [JsonPropertyName("orderDate")] + [GraphQLMember("orderDate")] public DateTimeOperationFilterInput OrderDate { get => GetValue("orderDate"); set => SetValue("orderDate", value); } - [JsonPropertyName("lines")] + [GraphQLMember("lines")] public ListFilterInputTypeOfOrderLineFilterInput Lines { get => GetValue("lines"); set => SetValue("lines", value); } - [JsonPropertyName("entryTime")] + [GraphQLMember("entryTime")] public TimeSpanOperationFilterInput EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs index 82a758f4..d70f2adf 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs @@ -15,42 +15,42 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderInput : GraphInputBase { - [JsonPropertyName("orderId")] + [GraphQLMember("orderId")] public Guid OrderId { get => GetValue("orderId"); set => SetValue("orderId", value); } - [JsonPropertyName("customer")] + [GraphQLMember("customer")] public CustomerInput Customer { get => GetValue("customer"); set => SetValue("customer", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressInput Address { get => GetValue("address"); set => SetValue("address", value); } - [JsonPropertyName("orderDate")] + [GraphQLMember("orderDate")] public DateTimeOffset OrderDate { get => GetValue("orderDate"); set => SetValue("orderDate", value); } - [JsonPropertyName("lines")] + [GraphQLMember("lines")] public List Lines { get => GetValue>("lines"); set => SetValue("lines", value); } - [JsonPropertyName("entryTime")] + [GraphQLMember("entryTime")] public TimeSpan? EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs index a6208f40..c6b8b8ba 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs @@ -15,49 +15,49 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderLineFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("lineNumber")] + [GraphQLMember("lineNumber")] public IntOperationFilterInput LineNumber { get => GetValue("lineNumber"); set => SetValue("lineNumber", value); } - [JsonPropertyName("order")] + [GraphQLMember("order")] public OrderFilterInput Order { get => GetValue("order"); set => SetValue("order", value); } - [JsonPropertyName("item")] + [GraphQLMember("item")] public ItemFilterInput Item { get => GetValue("item"); set => SetValue("item", value); } - [JsonPropertyName("price")] + [GraphQLMember("price")] public DecimalOperationFilterInput Price { get => GetValue("price"); set => SetValue("price", value); } - [JsonPropertyName("quantity")] + [GraphQLMember("quantity")] public FloatOperationFilterInput Quantity { get => GetValue("quantity"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs index 9a40d55b..27a61135 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs @@ -15,35 +15,35 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderLineInput : GraphInputBase { - [JsonPropertyName("lineNumber")] + [GraphQLMember("lineNumber")] public int LineNumber { get => GetValue("lineNumber"); set => SetValue("lineNumber", value); } - [JsonPropertyName("order")] + [GraphQLMember("order")] public OrderInput Order { get => GetValue("order"); set => SetValue("order", value); } - [JsonPropertyName("item")] + [GraphQLMember("item")] public ItemInput Item { get => GetValue("item"); set => SetValue("item", value); } - [JsonPropertyName("price")] + [GraphQLMember("price")] public decimal Price { get => GetValue("price"); set => SetValue("price", value); } - [JsonPropertyName("quantity")] + [GraphQLMember("quantity")] public double Quantity { get => GetValue("quantity"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs index a29e0aa8..ec58c51a 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs @@ -15,35 +15,35 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderSortInput : GraphInputBase { - [JsonPropertyName("orderId")] + [GraphQLMember("orderId")] public SortEnumType? OrderId { get => GetValue("orderId"); set => SetValue("orderId", value); } - [JsonPropertyName("customer")] + [GraphQLMember("customer")] public CustomerSortInput Customer { get => GetValue("customer"); set => SetValue("customer", value); } - [JsonPropertyName("address")] + [GraphQLMember("address")] public AddressSortInput Address { get => GetValue("address"); set => SetValue("address", value); } - [JsonPropertyName("orderDate")] + [GraphQLMember("orderDate")] public SortEnumType? OrderDate { get => GetValue("orderDate"); set => SetValue("orderDate", value); } - [JsonPropertyName("entryTime")] + [GraphQLMember("entryTime")] public SortEnumType? EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs index 9e959c0a..9b13b478 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class StringOperationFilterInput : GraphInputBase { - [JsonPropertyName("and")] + [GraphQLMember("and")] public List And { get => GetValue>("and"); set => SetValue("and", value); } - [JsonPropertyName("or")] + [GraphQLMember("or")] public List Or { get => GetValue>("or"); set => SetValue("or", value); } - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public string Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public string Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("contains")] + [GraphQLMember("contains")] public string Contains { get => GetValue("contains"); set => SetValue("contains", value); } - [JsonPropertyName("ncontains")] + [GraphQLMember("ncontains")] public string Ncontains { get => GetValue("ncontains"); set => SetValue("ncontains", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("startsWith")] + [GraphQLMember("startsWith")] public string StartsWith { get => GetValue("startsWith"); set => SetValue("startsWith", value); } - [JsonPropertyName("nstartsWith")] + [GraphQLMember("nstartsWith")] public string NstartsWith { get => GetValue("nstartsWith"); set => SetValue("nstartsWith", value); } - [JsonPropertyName("endsWith")] + [GraphQLMember("endsWith")] public string EndsWith { get => GetValue("endsWith"); set => SetValue("endsWith", value); } - [JsonPropertyName("nendsWith")] + [GraphQLMember("nendsWith")] public string NendsWith { get => GetValue("nendsWith"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs index 7b148966..b36790d6 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class TimeSpanOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public TimeSpan? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public TimeSpan? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public TimeSpan? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public TimeSpan? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public TimeSpan? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public TimeSpan? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public TimeSpan? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public TimeSpan? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public TimeSpan? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public TimeSpan? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs index 58df165b..f7172525 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs @@ -15,84 +15,84 @@ namespace Linq2GraphQL.TestClient; [JsonConverter(typeof(GraphInputConverter))] public partial class UuidOperationFilterInput : GraphInputBase { - [JsonPropertyName("eq")] + [GraphQLMember("eq")] public Guid? Eq { get => GetValue("eq"); set => SetValue("eq", value); } - [JsonPropertyName("neq")] + [GraphQLMember("neq")] public Guid? Neq { get => GetValue("neq"); set => SetValue("neq", value); } - [JsonPropertyName("in")] + [GraphQLMember("in")] public List In { get => GetValue>("in"); set => SetValue("in", value); } - [JsonPropertyName("nin")] + [GraphQLMember("nin")] public List Nin { get => GetValue>("nin"); set => SetValue("nin", value); } - [JsonPropertyName("gt")] + [GraphQLMember("gt")] public Guid? Gt { get => GetValue("gt"); set => SetValue("gt", value); } - [JsonPropertyName("ngt")] + [GraphQLMember("ngt")] public Guid? Ngt { get => GetValue("ngt"); set => SetValue("ngt", value); } - [JsonPropertyName("gte")] + [GraphQLMember("gte")] public Guid? Gte { get => GetValue("gte"); set => SetValue("gte", value); } - [JsonPropertyName("ngte")] + [GraphQLMember("ngte")] public Guid? Ngte { get => GetValue("ngte"); set => SetValue("ngte", value); } - [JsonPropertyName("lt")] + [GraphQLMember("lt")] public Guid? Lt { get => GetValue("lt"); set => SetValue("lt", value); } - [JsonPropertyName("nlt")] + [GraphQLMember("nlt")] public Guid? Nlt { get => GetValue("nlt"); set => SetValue("nlt", value); } - [JsonPropertyName("lte")] + [GraphQLMember("lte")] public Guid? Lte { get => GetValue("lte"); set => SetValue("lte", value); } - [JsonPropertyName("nlte")] + [GraphQLMember("nlte")] public Guid? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Interfaces/IAnimal.cs b/test/Linq2GraphQL.TestClient/Generated/Interfaces/IAnimal.cs index 3e76ed0d..61094fa8 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Interfaces/IAnimal.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Interfaces/IAnimal.cs @@ -56,23 +56,23 @@ internal class IAnimalConverter : InterfaceJsonConverter [JsonConverter(typeof(IAnimalConverter))] public interface IAnimal { - [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get; set; } - [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } internal class IAnimal__Concrete : IAnimal { - [JsonPropertyName("name")] + [GraphQLMember("name")] public string Name { get; set; } - [JsonPropertyName("numberOfLegs")] + [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs index 61fc1f2f..a1a1bc81 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs @@ -16,15 +16,12 @@ namespace Linq2GraphQL.TestClient; public partial class Address : GraphQLTypeBase { - [JsonPropertyName("name")] [GraphQLMember("name")] public string Name { get; set; } - [JsonPropertyName("street")] [GraphQLMember("street")] public string Street { get; set; } - [JsonPropertyName("postalCode")] [GraphQLMember("postalCode")] public string PostalCode { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs index 4a98f31a..99a69d69 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs @@ -22,28 +22,24 @@ public partial class AnimalsConnection : GraphQLTypeBase, Linq2GraphQL.Client.Co /// /// Information to aid in pagination. /// - [JsonPropertyName("pageInfo")] [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// - [JsonPropertyName("edges")] [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// - [JsonPropertyName("nodes")] [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// - [JsonPropertyName("totalCount")] [GraphQLMember("totalCount")] public int TotalCount { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs index a58127eb..cd2c470f 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs @@ -22,14 +22,12 @@ public partial class AnimalsEdge : GraphQLTypeBase /// /// A cursor for use in pagination. /// - [JsonPropertyName("cursor")] [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// - [JsonPropertyName("node")] [GraphQLMember("node")] public IAnimal Node { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs index 90d36038..0101f494 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs @@ -22,14 +22,12 @@ public partial class CollectionSegmentInfo : GraphQLTypeBase /// /// Indicates whether more items exist following the set defined by the clients arguments. /// - [JsonPropertyName("hasNextPage")] [GraphQLMember("hasNextPage")] public bool HasNextPage { get; set; } /// /// Indicates whether more items exist prior the set defined by the clients arguments. /// - [JsonPropertyName("hasPreviousPage")] [GraphQLMember("hasPreviousPage")] public bool HasPreviousPage { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs index fda87aa7..3fa5c6d9 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs @@ -16,23 +16,18 @@ namespace Linq2GraphQL.TestClient; public partial class Customer : GraphQLTypeBase { - [JsonPropertyName("customerId")] [GraphQLMember("customerId")] public Guid CustomerId { get; set; } - [JsonPropertyName("customerName")] [GraphQLMember("customerName")] public string CustomerName { get; set; } - [JsonPropertyName("status")] [GraphQLMember("status")] public CustomerStatus Status { get; set; } - [JsonPropertyName("orders")] [GraphQLMember("orders")] public List Orders { get; set; } - [JsonPropertyName("address")] [GraphQLMember("address")] public Address Address { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs index 76ffc15b..611591ee 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs @@ -16,15 +16,12 @@ namespace Linq2GraphQL.TestClient; public partial class Item : GraphQLTypeBase { - [JsonPropertyName("itemId")] [GraphQLMember("itemId")] public string ItemId { get; set; } - [JsonPropertyName("itemName")] [GraphQLMember("itemName")] public string ItemName { get; set; } - [JsonPropertyName("data")] [GraphQLMember("data")] public List Data { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs index 845283d2..8809faeb 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs @@ -7,7 +7,6 @@ using System; using System.Collections.Generic; -using System.Runtime.ExceptionServices; using System.Text.Json.Serialization; using Linq2GraphQL.Client; using Linq2GraphQL.Client.Common; @@ -17,14 +16,12 @@ namespace Linq2GraphQL.TestClient; public static class OrderExtensions { - [GraphMethod("orderHello")] [GraphQLMember("orderHello")] public static string OrderHello(this Order order, [GraphQLArgument("name", "String!")] string name, [GraphQLArgument("first", "Int!")] int first) { return order.GetMethodValue("orderHello", name, first); } - [GraphMethod("orderAddress")] [GraphQLMember("orderAddress")] public static Address OrderAddress(this Order order, [GraphQLArgument("addressType", "AddressType!")] AddressType addressType) { @@ -39,37 +36,29 @@ public partial class Order : GraphQLTypeBase /// /// Do not use in Query, only to retrive result /// - [GraphShadowProperty] public string OrderHello => _orderHello.Value(() => GetFirstMethodValue("orderHello")); private LazyProperty
_orderAddress = new(); /// /// Do not use in Query, only to retrive result /// - [GraphShadowProperty] public Address OrderAddress => _orderAddress.Value(() => GetFirstMethodValue
("orderAddress")); - [JsonPropertyName("orderId")] [GraphQLMember("orderId")] public Guid OrderId { get; set; } - [JsonPropertyName("customer")] [GraphQLMember("customer")] public Customer Customer { get; set; } - [JsonPropertyName("address")] [GraphQLMember("address")] public Address Address { get; set; } - [JsonPropertyName("orderDate")] [GraphQLMember("orderDate")] public DateTimeOffset OrderDate { get; set; } - [JsonPropertyName("lines")] [GraphQLMember("lines")] public List Lines { get; set; } - [JsonPropertyName("entryTime")] [GraphQLMember("entryTime")] public TimeSpan? EntryTime { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs index dc881f8b..4fa87625 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs @@ -16,23 +16,18 @@ namespace Linq2GraphQL.TestClient; public partial class OrderLine : GraphQLTypeBase { - [JsonPropertyName("lineNumber")] [GraphQLMember("lineNumber")] public int LineNumber { get; set; } - [JsonPropertyName("order")] [GraphQLMember("order")] public Order Order { get; set; } - [JsonPropertyName("item")] [GraphQLMember("item")] public Item Item { get; set; } - [JsonPropertyName("price")] [GraphQLMember("price")] public decimal Price { get; set; } - [JsonPropertyName("quantity")] [GraphQLMember("quantity")] public double Quantity { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs index 74ebfeff..4eeb9cd6 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs @@ -22,28 +22,24 @@ public partial class OrdersConnection : GraphQLTypeBase, Linq2GraphQL.Client.Com /// /// Information to aid in pagination. /// - [JsonPropertyName("pageInfo")] [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// - [JsonPropertyName("edges")] [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// - [JsonPropertyName("nodes")] [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// - [JsonPropertyName("totalCount")] [GraphQLMember("totalCount")] public int TotalCount { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs index 4fbecb73..22939c10 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs @@ -22,14 +22,12 @@ public partial class OrdersEdge : GraphQLTypeBase /// /// A cursor for use in pagination. /// - [JsonPropertyName("cursor")] [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// - [JsonPropertyName("node")] [GraphQLMember("node")] public Order Node { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs index 81be96aa..a4adf1f8 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs @@ -22,28 +22,24 @@ public partial class OrdersNoBackwardPaginationConnection : GraphQLTypeBase, Lin /// /// Information to aid in pagination. /// - [JsonPropertyName("pageInfo")] [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// - [JsonPropertyName("edges")] [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// - [JsonPropertyName("nodes")] [GraphQLMember("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// - [JsonPropertyName("totalCount")] [GraphQLMember("totalCount")] public int TotalCount { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs index 0ac2f5bd..c1c6303b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs @@ -22,14 +22,12 @@ public partial class OrdersNoBackwardPaginationEdge : GraphQLTypeBase /// /// A cursor for use in pagination. /// - [JsonPropertyName("cursor")] [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// - [JsonPropertyName("node")] [GraphQLMember("node")] public Order Node { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs index 6a996db4..a74f9c10 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs @@ -22,21 +22,18 @@ public partial class OrdersNoTotalCountConnection : GraphQLTypeBase, Linq2GraphQ /// /// Information to aid in pagination. /// - [JsonPropertyName("pageInfo")] [GraphQLMember("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// - [JsonPropertyName("edges")] [GraphQLMember("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// - [JsonPropertyName("nodes")] [GraphQLMember("nodes")] public List Nodes { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs index e4620c59..b7482faf 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs @@ -22,14 +22,12 @@ public partial class OrdersNoTotalCountEdge : GraphQLTypeBase /// /// A cursor for use in pagination. /// - [JsonPropertyName("cursor")] [GraphQLMember("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// - [JsonPropertyName("node")] [GraphQLMember("node")] public Order Node { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs index cb0740d2..75b74329 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs @@ -22,18 +22,15 @@ public partial class OrdersOffsetPagingCollectionSegment : GraphQLTypeBase /// /// Information to aid in pagination. /// - [JsonPropertyName("pageInfo")] [GraphQLMember("pageInfo")] public CollectionSegmentInfo PageInfo { get; set; } /// /// A flattened list of the items. /// - [JsonPropertyName("items")] [GraphQLMember("items")] public List Items { get; set; } - [JsonPropertyName("totalCount")] [GraphQLMember("totalCount")] public int TotalCount { get; set; } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs index 9bbc3b17..f924b632 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs @@ -16,22 +16,18 @@ namespace Linq2GraphQL.TestClient; public partial class Pig : GraphQLTypeBase, IAnimal { - [JsonPropertyName("name")] [GraphQLMember("name")] public string Name { get; set; } - [JsonPropertyName("numberOfLegs")] [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } - [JsonPropertyName("speed")] [GraphQLMember("speed")] public int Speed { get; set; } - [JsonPropertyName("spices")] [GraphQLMember("spices")] public string Spices { get; set; } - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs index b37cce63..efed19f7 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs @@ -16,22 +16,18 @@ namespace Linq2GraphQL.TestClient; public partial class Spider : GraphQLTypeBase, IAnimal { - [JsonPropertyName("name")] [GraphQLMember("name")] public string Name { get; set; } - [JsonPropertyName("numberOfLegs")] [GraphQLMember("numberOfLegs")] public int NumberOfLegs { get; set; } - [JsonPropertyName("speed")] [GraphQLMember("speed")] public int Speed { get; set; } - [JsonPropertyName("poisonous")] [GraphQLMember("poisonous")] public bool Poisonous { get; set; } - [JsonPropertyName("__typename")] + [GraphQLMember("__typename")] public string __TypeName { get; set; } } From ced63b9ad0650516021a325ebfd7cf507dca702f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 9 Jan 2025 15:56:25 +0100 Subject: [PATCH 4/8] Added JsonPropertyName attribute --- .../Attributes/GraphQLMemberAttribute.cs | 6 +- .../Converters/CustomScalarConverter.cs | 3 - src/Linq2GraphQL.Client/GraphClient.cs | 4 +- src/Linq2GraphQL.Client/Utilities.cs | 322 +++++++++--------- .../Templates/Class/ClassTemplate.cs | 22 +- .../Templates/Class/ClassTemplate.tt | 2 + .../Templates/Class/InputClassTemplate.cs | 19 +- .../Templates/Class/InputClassTemplate.tt | 1 + .../Generated/Inputs/AddressFilterInput.cs | 5 + .../Generated/Inputs/AddressInput.cs | 3 + .../Generated/Inputs/AddressSortInput.cs | 3 + .../Inputs/ByteOperationFilterInput.cs | 12 + .../Generated/Inputs/CustomerFilterInput.cs | 7 + .../Generated/Inputs/CustomerInput.cs | 5 + .../Generated/Inputs/CustomerSortInput.cs | 4 + .../CustomerStatusOperationFilterInput.cs | 4 + .../Inputs/DateTimeOperationFilterInput.cs | 12 + .../Inputs/DecimalOperationFilterInput.cs | 12 + .../Inputs/FloatOperationFilterInput.cs | 12 + .../Generated/Inputs/IAnimalFilterInput.cs | 4 + .../Generated/Inputs/IAnimalSortInput.cs | 2 + .../Inputs/IntOperationFilterInput.cs | 12 + .../Generated/Inputs/ItemFilterInput.cs | 5 + .../Generated/Inputs/ItemInput.cs | 3 + .../Inputs/ListByteOperationFilterInput.cs | 4 + .../ListFilterInputTypeOfOrderFilterInput.cs | 4 + ...stFilterInputTypeOfOrderLineFilterInput.cs | 4 + .../Generated/Inputs/OrderFilterInput.cs | 8 + .../Generated/Inputs/OrderInput.cs | 6 + .../Generated/Inputs/OrderLineFilterInput.cs | 7 + .../Generated/Inputs/OrderLineInput.cs | 5 + .../Generated/Inputs/OrderSortInput.cs | 5 + .../Inputs/StringOperationFilterInput.cs | 12 + .../Inputs/TimeSpanOperationFilterInput.cs | 12 + .../Inputs/UuidOperationFilterInput.cs | 12 + .../Generated/Types/Address.cs | 3 + .../Generated/Types/AnimalsConnection.cs | 4 + .../Generated/Types/AnimalsEdge.cs | 2 + .../Generated/Types/CollectionSegmentInfo.cs | 2 + .../Generated/Types/Customer.cs | 5 + .../Generated/Types/Item.cs | 3 + .../Generated/Types/Order.cs | 6 + .../Generated/Types/OrderLine.cs | 5 + .../Generated/Types/OrdersConnection.cs | 4 + .../Generated/Types/OrdersEdge.cs | 2 + .../OrdersNoBackwardPaginationConnection.cs | 4 + .../Types/OrdersNoBackwardPaginationEdge.cs | 2 + .../Types/OrdersNoTotalCountConnection.cs | 3 + .../Generated/Types/OrdersNoTotalCountEdge.cs | 2 + .../OrdersOffsetPagingCollectionSegment.cs | 3 + .../Generated/Types/Pig.cs | 5 + .../Generated/Types/Spider.cs | 5 + 52 files changed, 443 insertions(+), 180 deletions(-) diff --git a/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs b/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs index 36bb92a0..28b5e375 100644 --- a/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs +++ b/src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs @@ -1,4 +1,6 @@ -namespace Linq2GraphQL.Client; +using System.Text.Json.Serialization; + +namespace Linq2GraphQL.Client; [AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)] public class GraphQLMemberAttribute : Attribute @@ -9,4 +11,4 @@ public GraphQLMemberAttribute(string graphQLName) } public string GraphQLName { get; private set; } -} \ No newline at end of file +} diff --git a/src/Linq2GraphQL.Client/Converters/CustomScalarConverter.cs b/src/Linq2GraphQL.Client/Converters/CustomScalarConverter.cs index 80e28597..5a70f6bf 100644 --- a/src/Linq2GraphQL.Client/Converters/CustomScalarConverter.cs +++ b/src/Linq2GraphQL.Client/Converters/CustomScalarConverter.cs @@ -6,9 +6,6 @@ namespace Linq2GraphQL.Client { - - - public class CustomScalarConverter : JsonConverter where TScalar : CustomScalar, new() { diff --git a/src/Linq2GraphQL.Client/GraphClient.cs b/src/Linq2GraphQL.Client/GraphClient.cs index 46087a2b..6a833d39 100644 --- a/src/Linq2GraphQL.Client/GraphClient.cs +++ b/src/Linq2GraphQL.Client/GraphClient.cs @@ -1,5 +1,6 @@ using System.Text.Json; using System.Text.Json.Serialization; +using Linq2GraphQL.Client.Converters; using Linq2GraphQL.Client.Schema; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; @@ -25,7 +26,7 @@ public GraphClient(HttpClient httpClient, IOptions options, SerializerOptions = new() { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, - Converters = { } + Converters = { }, }; SubscriptionUrl = GetSubscriptionUrl(); @@ -35,6 +36,7 @@ public GraphClient(HttpClient httpClient, IOptions options, public SubscriptionProtocol SubscriptionProtocol => options.Value.SubscriptionProtocol; public HttpClient HttpClient { get; } public JsonSerializerOptions SerializerOptions { get; } + private string GetSubscriptionUrl() { diff --git a/src/Linq2GraphQL.Client/Utilities.cs b/src/Linq2GraphQL.Client/Utilities.cs index 3c8ad8df..486dd7ca 100644 --- a/src/Linq2GraphQL.Client/Utilities.cs +++ b/src/Linq2GraphQL.Client/Utilities.cs @@ -49,165 +49,165 @@ public static void ParseExpression(Expression body, QueryNode parent) - public static void ParseExpression_OLD(Expression body, QueryNode parent) - { - var node = new QueryNode(parent.Member); - ParseExpressionInternal(body, node); - node.SetAddPrimitiveChildren(); - - foreach (var childNode in node.ChildNodes) - { - parent.AddChildNode(childNode); - } - } - - private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression) - { - if (methodCallExpression.Arguments.Count != 2) - { - return false; - } - - ; - var methodName = methodCallExpression.Method.Name; - return (methodName == "Select" || methodName == "SelectMany"); - } - - - private static void ParseExpressionInternal(Expression body, QueryNode parent) - { - if (body.NodeType == ExpressionType.MemberInit) - { - var exp = (MemberInitExpression)body; - foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment) - .Cast()) - { - ParseExpressionInternal(binding.Expression, parent); - } - } - - switch (body) - { - case LambdaExpression lambdaExpression: - ParseExpressionInternal(lambdaExpression.Body, parent); - break; - - case MemberExpression memberExpression: - var (parentNode, _) = GetMemberQueryNode(memberExpression); - parent.AddChildNode(parentNode); - break; - - case MethodCallExpression methodCallExp: - ParseMethodCallExpression(parent, methodCallExp); - break; - - case NewExpression newExpression: - foreach (var argument in newExpression.Arguments) - { - ParseExpression(argument, parent); - } - - break; - } - } - - private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp) - { - var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute(); - if (graphInterfaceAttribute != null) - { - var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true); - parent.AddChildNode(queryNode); - return; - } - - var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute(); - if (graphMethodAttribute != null) - { - var arguments = new List(); - - var i = 0; - foreach (var parameter in methodCallExp.Method.GetParameters()) - { - var graphAttribute = parameter.GetCustomAttribute(); - if (graphAttribute != null) - { - var arg = methodCallExp.Arguments[i]; - ConstantExpression argConstant; - if (arg.NodeType == ExpressionType.Convert) - { - var unaryExpression = (UnaryExpression)arg; - argConstant = (ConstantExpression)unaryExpression.Operand; - } - else - { - argConstant = (ConstantExpression)arg; - } - - arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType, - argConstant.Value)); - } - - i++; - } - - var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments); - parent.AddChildNode(queryNode); - } - else if (methodCallExp.IsSelectOrSelectMany()) - { - if (methodCallExp.Arguments[0] is MemberExpression memberExpr) - { - var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr); - ParseExpressionInternal(methodCallExp.Arguments[1], LastNode); - parent.AddChildNode(ParentNode); - } - else - { - ParseExpressionInternal(methodCallExp.Arguments[1], parent); - } - } - } - - private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression) - { - var members = GetMembers(expression); - if (members == null) return (null, null); - - members.Reverse(); - - QueryNode parentNode = null; - QueryNode currentNode = null; - - foreach (var member in members) - { - var newNode = new QueryNode(member); - if (parentNode == null) - { - parentNode = newNode; - } - else - { - currentNode.AddChildNode(newNode); - } - - currentNode = newNode; - } - - return (parentNode, currentNode); - } - - - private static List GetMembers(Expression expression) - { - var members = new List(); - if (expression.NodeType == ExpressionType.MemberAccess) - { - var memberExpression = (MemberExpression)expression; - members.Add(memberExpression.Member); - members.AddRange(GetMembers(memberExpression.Expression)); - } - - return members; - } + //public static void ParseExpression_OLD(Expression body, QueryNode parent) + //{ + // var node = new QueryNode(parent.Member); + // ParseExpressionInternal(body, node); + // node.SetAddPrimitiveChildren(); + + // foreach (var childNode in node.ChildNodes) + // { + // parent.AddChildNode(childNode); + // } + //} + + //private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression) + //{ + // if (methodCallExpression.Arguments.Count != 2) + // { + // return false; + // } + + // ; + // var methodName = methodCallExpression.Method.Name; + // return (methodName == "Select" || methodName == "SelectMany"); + //} + + + //private static void ParseExpressionInternal(Expression body, QueryNode parent) + //{ + // if (body.NodeType == ExpressionType.MemberInit) + // { + // var exp = (MemberInitExpression)body; + // foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment) + // .Cast()) + // { + // ParseExpressionInternal(binding.Expression, parent); + // } + // } + + // switch (body) + // { + // case LambdaExpression lambdaExpression: + // ParseExpressionInternal(lambdaExpression.Body, parent); + // break; + + // case MemberExpression memberExpression: + // var (parentNode, _) = GetMemberQueryNode(memberExpression); + // parent.AddChildNode(parentNode); + // break; + + // case MethodCallExpression methodCallExp: + // ParseMethodCallExpression(parent, methodCallExp); + // break; + + // case NewExpression newExpression: + // foreach (var argument in newExpression.Arguments) + // { + // ParseExpression(argument, parent); + // } + + // break; + // } + //} + + //private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp) + //{ + // var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute(); + // if (graphInterfaceAttribute != null) + // { + // var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true); + // parent.AddChildNode(queryNode); + // return; + // } + + // var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute(); + // if (graphMethodAttribute != null) + // { + // var arguments = new List(); + + // var i = 0; + // foreach (var parameter in methodCallExp.Method.GetParameters()) + // { + // var graphAttribute = parameter.GetCustomAttribute(); + // if (graphAttribute != null) + // { + // var arg = methodCallExp.Arguments[i]; + // ConstantExpression argConstant; + // if (arg.NodeType == ExpressionType.Convert) + // { + // var unaryExpression = (UnaryExpression)arg; + // argConstant = (ConstantExpression)unaryExpression.Operand; + // } + // else + // { + // argConstant = (ConstantExpression)arg; + // } + + // arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType, + // argConstant.Value)); + // } + + // i++; + // } + + // var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments); + // parent.AddChildNode(queryNode); + // } + // else if (methodCallExp.IsSelectOrSelectMany()) + // { + // if (methodCallExp.Arguments[0] is MemberExpression memberExpr) + // { + // var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr); + // ParseExpressionInternal(methodCallExp.Arguments[1], LastNode); + // parent.AddChildNode(ParentNode); + // } + // else + // { + // ParseExpressionInternal(methodCallExp.Arguments[1], parent); + // } + // } + //} + + //private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression) + //{ + // var members = GetMembers(expression); + // if (members == null) return (null, null); + + // members.Reverse(); + + // QueryNode parentNode = null; + // QueryNode currentNode = null; + + // foreach (var member in members) + // { + // var newNode = new QueryNode(member); + // if (parentNode == null) + // { + // parentNode = newNode; + // } + // else + // { + // currentNode.AddChildNode(newNode); + // } + + // currentNode = newNode; + // } + + // return (parentNode, currentNode); + //} + + + //private static List GetMembers(Expression expression) + //{ + // var members = new List(); + // if (expression.NodeType == ExpressionType.MemberAccess) + // { + // var memberExpression = (MemberExpression)expression; + // members.Add(memberExpression.Member); + // members.AddRange(GetMembers(memberExpression.Expression)); + // } + + // return members; + //} } \ No newline at end of file diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs index f64b7b80..f7f48997 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs @@ -288,42 +288,50 @@ public virtual string TransformText() #line default #line hidden - this.Write("\")]\r\n public "); + this.Write("\")]\r\n [JsonPropertyName(\""); #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); + + #line default + #line hidden + this.Write("\")]\r\n public "); + + #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field))); #line default #line hidden this.Write(" "); - #line 55 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 56 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" { get; set; }\r\n\r\n"); - #line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 58 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden - #line 59 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasInterfaces) { #line default #line hidden - this.Write(" [GraphQLMember(\"__typename\")]\r\n public string __TypeName { get; set; }\r\n"); + this.Write(" [GraphQLMember(\"__typename\")]\r\n [JsonPropertyName(\"__typename\")]\r\n publ" + + "ic string __TypeName { get; set; }\r\n"); - #line 62 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 64 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt index 31c45c41..6ba10a49 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt @@ -52,12 +52,14 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// <# } #> [GraphQLMember("<#= field.Name #>")] + [JsonPropertyName("<#= field.Name #>")] public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> { get; set; } <# } #> <# } #> <# if (classType.HasInterfaces) { #> [GraphQLMember("__typename")] + [JsonPropertyName("__typename")] public string __TypeName { get; set; } <# } #> } diff --git a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs index 30019387..e94bf2af 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs @@ -65,44 +65,51 @@ public virtual string TransformText() #line default #line hidden - this.Write("\")]\r\n\tpublic "); + this.Write("\")]\r\n\t[JsonPropertyName(\""); #line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); + + #line default + #line hidden + this.Write("\")]\r\n\tpublic "); + + #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetPropertyDefinition(field))); #line default #line hidden this.Write(" "); - #line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write(" \r\n\t{\r\n\t\tget => GetValue<"); - #line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(coreType.CSharpTypeDefinition)); #line default #line hidden this.Write(">(\""); - #line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\");\r\n \tset => SetValue(\""); - #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\", value);\r\n\t}\r\n\r\n"); - #line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" } diff --git a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt index 459357af..68fdbc8a 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt @@ -16,6 +16,7 @@ public partial class <#= classType.Name #> : GraphInputBase var coreType = field.CoreType; #> [GraphQLMember("<#= field.Name #>")] + [JsonPropertyName("<#= field.Name #>")] public <#= GetPropertyDefinition(field) #> <#= field.CSharpName #> { get => GetValue<<#= coreType.CSharpTypeDefinition #>>("<#= field.Name #>"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs index d24cd3cf..eeaffc70 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class AddressFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("name")] + [JsonPropertyName("name")] public StringOperationFilterInput Name { get => GetValue("name"); @@ -37,6 +40,7 @@ public StringOperationFilterInput Name } [GraphQLMember("street")] + [JsonPropertyName("street")] public StringOperationFilterInput Street { get => GetValue("street"); @@ -44,6 +48,7 @@ public StringOperationFilterInput Street } [GraphQLMember("postalCode")] + [JsonPropertyName("postalCode")] public StringOperationFilterInput PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs index c2259791..3ec82d82 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class AddressInput : GraphInputBase { [GraphQLMember("name")] + [JsonPropertyName("name")] public string Name { get => GetValue("name"); @@ -23,6 +24,7 @@ public string Name } [GraphQLMember("street")] + [JsonPropertyName("street")] public string Street { get => GetValue("street"); @@ -30,6 +32,7 @@ public string Street } [GraphQLMember("postalCode")] + [JsonPropertyName("postalCode")] public string PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs index 5bda02d9..e105695d 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/AddressSortInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class AddressSortInput : GraphInputBase { [GraphQLMember("name")] + [JsonPropertyName("name")] public SortEnumType? Name { get => GetValue("name"); @@ -23,6 +24,7 @@ public SortEnumType? Name } [GraphQLMember("street")] + [JsonPropertyName("street")] public SortEnumType? Street { get => GetValue("street"); @@ -30,6 +32,7 @@ public SortEnumType? Street } [GraphQLMember("postalCode")] + [JsonPropertyName("postalCode")] public SortEnumType? PostalCode { get => GetValue("postalCode"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs index b8871498..4f1ef9e9 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ByteOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ByteOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public byte? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public byte? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public byte? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public byte? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public byte? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public byte? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public byte? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public byte? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public byte? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public byte? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public byte? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public byte? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public byte? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public byte? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public byte? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public byte? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public byte? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public byte? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public byte? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs index bc61bd06..59d88914 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class CustomerFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("customerId")] + [JsonPropertyName("customerId")] public UuidOperationFilterInput CustomerId { get => GetValue("customerId"); @@ -37,6 +40,7 @@ public UuidOperationFilterInput CustomerId } [GraphQLMember("customerName")] + [JsonPropertyName("customerName")] public StringOperationFilterInput CustomerName { get => GetValue("customerName"); @@ -44,6 +48,7 @@ public StringOperationFilterInput CustomerName } [GraphQLMember("status")] + [JsonPropertyName("status")] public CustomerStatusOperationFilterInput Status { get => GetValue("status"); @@ -51,6 +56,7 @@ public CustomerStatusOperationFilterInput Status } [GraphQLMember("orders")] + [JsonPropertyName("orders")] public ListFilterInputTypeOfOrderFilterInput Orders { get => GetValue("orders"); @@ -58,6 +64,7 @@ public ListFilterInputTypeOfOrderFilterInput Orders } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressFilterInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs index f87ede24..1e463f2f 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class CustomerInput : GraphInputBase { [GraphQLMember("customerId")] + [JsonPropertyName("customerId")] public Guid CustomerId { get => GetValue("customerId"); @@ -23,6 +24,7 @@ public Guid CustomerId } [GraphQLMember("customerName")] + [JsonPropertyName("customerName")] public string CustomerName { get => GetValue("customerName"); @@ -30,6 +32,7 @@ public string CustomerName } [GraphQLMember("status")] + [JsonPropertyName("status")] public CustomerStatus Status { get => GetValue("status"); @@ -37,6 +40,7 @@ public CustomerStatus Status } [GraphQLMember("orders")] + [JsonPropertyName("orders")] public List Orders { get => GetValue>("orders"); @@ -44,6 +48,7 @@ public List Orders } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs index 96c87b51..8e9f2879 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerSortInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class CustomerSortInput : GraphInputBase { [GraphQLMember("customerId")] + [JsonPropertyName("customerId")] public SortEnumType? CustomerId { get => GetValue("customerId"); @@ -23,6 +24,7 @@ public SortEnumType? CustomerId } [GraphQLMember("customerName")] + [JsonPropertyName("customerName")] public SortEnumType? CustomerName { get => GetValue("customerName"); @@ -30,6 +32,7 @@ public SortEnumType? CustomerName } [GraphQLMember("status")] + [JsonPropertyName("status")] public SortEnumType? Status { get => GetValue("status"); @@ -37,6 +40,7 @@ public SortEnumType? Status } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressSortInput Address { get => GetValue("address"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs index 8c945a51..33c1137c 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/CustomerStatusOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class CustomerStatusOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public CustomerStatus? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public CustomerStatus? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public CustomerStatus? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public CustomerStatus? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs index 4c793c35..4a2d5362 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/DateTimeOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class DateTimeOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public DateTimeOffset? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public DateTimeOffset? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public DateTimeOffset? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public DateTimeOffset? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public DateTimeOffset? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public DateTimeOffset? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public DateTimeOffset? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public DateTimeOffset? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public DateTimeOffset? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public DateTimeOffset? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public DateTimeOffset? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public DateTimeOffset? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public DateTimeOffset? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public DateTimeOffset? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public DateTimeOffset? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public DateTimeOffset? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public DateTimeOffset? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public DateTimeOffset? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public DateTimeOffset? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs index 5b53566e..2acf9c18 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/DecimalOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class DecimalOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public decimal? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public decimal? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public decimal? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public decimal? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public decimal? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public decimal? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public decimal? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public decimal? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public decimal? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public decimal? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public decimal? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public decimal? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public decimal? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public decimal? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public decimal? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public decimal? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public decimal? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public decimal? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public decimal? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs index d636546d..554a0f6d 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/FloatOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class FloatOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public double? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public double? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public double? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public double? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public double? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public double? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public double? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public double? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public double? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public double? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public double? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public double? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public double? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public double? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public double? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public double? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public double? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public double? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public double? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs index 7acdd61d..e5bfaec4 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class IAnimalFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("name")] + [JsonPropertyName("name")] public StringOperationFilterInput Name { get => GetValue("name"); @@ -37,6 +40,7 @@ public StringOperationFilterInput Name } [GraphQLMember("numberOfLegs")] + [JsonPropertyName("numberOfLegs")] public IntOperationFilterInput NumberOfLegs { get => GetValue("numberOfLegs"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs index 58794f1b..211e80ee 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IAnimalSortInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class IAnimalSortInput : GraphInputBase { [GraphQLMember("name")] + [JsonPropertyName("name")] public SortEnumType? Name { get => GetValue("name"); @@ -23,6 +24,7 @@ public SortEnumType? Name } [GraphQLMember("numberOfLegs")] + [JsonPropertyName("numberOfLegs")] public SortEnumType? NumberOfLegs { get => GetValue("numberOfLegs"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs index 0bcb0cdd..ec93fd6f 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/IntOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class IntOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public int? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public int? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public int? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public int? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public int? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public int? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public int? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public int? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public int? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public int? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public int? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public int? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public int? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public int? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public int? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public int? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public int? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public int? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public int? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs index f681fbbd..836ec95b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ItemFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("itemId")] + [JsonPropertyName("itemId")] public StringOperationFilterInput ItemId { get => GetValue("itemId"); @@ -37,6 +40,7 @@ public StringOperationFilterInput ItemId } [GraphQLMember("itemName")] + [JsonPropertyName("itemName")] public StringOperationFilterInput ItemName { get => GetValue("itemName"); @@ -44,6 +48,7 @@ public StringOperationFilterInput ItemName } [GraphQLMember("data")] + [JsonPropertyName("data")] public ListByteOperationFilterInput Data { get => GetValue("data"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs index 374c6ad9..aa030c07 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ItemInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ItemInput : GraphInputBase { [GraphQLMember("itemId")] + [JsonPropertyName("itemId")] public string ItemId { get => GetValue("itemId"); @@ -23,6 +24,7 @@ public string ItemId } [GraphQLMember("itemName")] + [JsonPropertyName("itemName")] public string ItemName { get => GetValue("itemName"); @@ -30,6 +32,7 @@ public string ItemName } [GraphQLMember("data")] + [JsonPropertyName("data")] public List Data { get => GetValue>("data"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs index 1082c2a4..7fdd6ecc 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListByteOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ListByteOperationFilterInput : GraphInputBase { [GraphQLMember("all")] + [JsonPropertyName("all")] public ByteOperationFilterInput All { get => GetValue("all"); @@ -23,6 +24,7 @@ public ByteOperationFilterInput All } [GraphQLMember("none")] + [JsonPropertyName("none")] public ByteOperationFilterInput None { get => GetValue("none"); @@ -30,6 +32,7 @@ public ByteOperationFilterInput None } [GraphQLMember("some")] + [JsonPropertyName("some")] public ByteOperationFilterInput Some { get => GetValue("some"); @@ -37,6 +40,7 @@ public ByteOperationFilterInput Some } [GraphQLMember("any")] + [JsonPropertyName("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs index 3ffd25aa..56aca507 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ListFilterInputTypeOfOrderFilterInput : GraphInputBase { [GraphQLMember("all")] + [JsonPropertyName("all")] public OrderFilterInput All { get => GetValue("all"); @@ -23,6 +24,7 @@ public OrderFilterInput All } [GraphQLMember("none")] + [JsonPropertyName("none")] public OrderFilterInput None { get => GetValue("none"); @@ -30,6 +32,7 @@ public OrderFilterInput None } [GraphQLMember("some")] + [JsonPropertyName("some")] public OrderFilterInput Some { get => GetValue("some"); @@ -37,6 +40,7 @@ public OrderFilterInput Some } [GraphQLMember("any")] + [JsonPropertyName("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs index f81d158b..25317e10 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/ListFilterInputTypeOfOrderLineFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class ListFilterInputTypeOfOrderLineFilterInput : GraphInputBase { [GraphQLMember("all")] + [JsonPropertyName("all")] public OrderLineFilterInput All { get => GetValue("all"); @@ -23,6 +24,7 @@ public OrderLineFilterInput All } [GraphQLMember("none")] + [JsonPropertyName("none")] public OrderLineFilterInput None { get => GetValue("none"); @@ -30,6 +32,7 @@ public OrderLineFilterInput None } [GraphQLMember("some")] + [JsonPropertyName("some")] public OrderLineFilterInput Some { get => GetValue("some"); @@ -37,6 +40,7 @@ public OrderLineFilterInput Some } [GraphQLMember("any")] + [JsonPropertyName("any")] public bool? Any { get => GetValue("any"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs index f6336de5..7d44d781 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class OrderFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("orderId")] + [JsonPropertyName("orderId")] public UuidOperationFilterInput OrderId { get => GetValue("orderId"); @@ -37,6 +40,7 @@ public UuidOperationFilterInput OrderId } [GraphQLMember("customer")] + [JsonPropertyName("customer")] public CustomerFilterInput Customer { get => GetValue("customer"); @@ -44,6 +48,7 @@ public CustomerFilterInput Customer } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressFilterInput Address { get => GetValue("address"); @@ -51,6 +56,7 @@ public AddressFilterInput Address } [GraphQLMember("orderDate")] + [JsonPropertyName("orderDate")] public DateTimeOperationFilterInput OrderDate { get => GetValue("orderDate"); @@ -58,6 +64,7 @@ public DateTimeOperationFilterInput OrderDate } [GraphQLMember("lines")] + [JsonPropertyName("lines")] public ListFilterInputTypeOfOrderLineFilterInput Lines { get => GetValue("lines"); @@ -65,6 +72,7 @@ public ListFilterInputTypeOfOrderLineFilterInput Lines } [GraphQLMember("entryTime")] + [JsonPropertyName("entryTime")] public TimeSpanOperationFilterInput EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs index d70f2adf..faadd772 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class OrderInput : GraphInputBase { [GraphQLMember("orderId")] + [JsonPropertyName("orderId")] public Guid OrderId { get => GetValue("orderId"); @@ -23,6 +24,7 @@ public Guid OrderId } [GraphQLMember("customer")] + [JsonPropertyName("customer")] public CustomerInput Customer { get => GetValue("customer"); @@ -30,6 +32,7 @@ public CustomerInput Customer } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressInput Address { get => GetValue("address"); @@ -37,6 +40,7 @@ public AddressInput Address } [GraphQLMember("orderDate")] + [JsonPropertyName("orderDate")] public DateTimeOffset OrderDate { get => GetValue("orderDate"); @@ -44,6 +48,7 @@ public DateTimeOffset OrderDate } [GraphQLMember("lines")] + [JsonPropertyName("lines")] public List Lines { get => GetValue>("lines"); @@ -51,6 +56,7 @@ public List Lines } [GraphQLMember("entryTime")] + [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs index c6b8b8ba..1546b2e7 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class OrderLineFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("lineNumber")] + [JsonPropertyName("lineNumber")] public IntOperationFilterInput LineNumber { get => GetValue("lineNumber"); @@ -37,6 +40,7 @@ public IntOperationFilterInput LineNumber } [GraphQLMember("order")] + [JsonPropertyName("order")] public OrderFilterInput Order { get => GetValue("order"); @@ -44,6 +48,7 @@ public OrderFilterInput Order } [GraphQLMember("item")] + [JsonPropertyName("item")] public ItemFilterInput Item { get => GetValue("item"); @@ -51,6 +56,7 @@ public ItemFilterInput Item } [GraphQLMember("price")] + [JsonPropertyName("price")] public DecimalOperationFilterInput Price { get => GetValue("price"); @@ -58,6 +64,7 @@ public DecimalOperationFilterInput Price } [GraphQLMember("quantity")] + [JsonPropertyName("quantity")] public FloatOperationFilterInput Quantity { get => GetValue("quantity"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs index 27a61135..987936d0 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderLineInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class OrderLineInput : GraphInputBase { [GraphQLMember("lineNumber")] + [JsonPropertyName("lineNumber")] public int LineNumber { get => GetValue("lineNumber"); @@ -23,6 +24,7 @@ public int LineNumber } [GraphQLMember("order")] + [JsonPropertyName("order")] public OrderInput Order { get => GetValue("order"); @@ -30,6 +32,7 @@ public OrderInput Order } [GraphQLMember("item")] + [JsonPropertyName("item")] public ItemInput Item { get => GetValue("item"); @@ -37,6 +40,7 @@ public ItemInput Item } [GraphQLMember("price")] + [JsonPropertyName("price")] public decimal Price { get => GetValue("price"); @@ -44,6 +48,7 @@ public decimal Price } [GraphQLMember("quantity")] + [JsonPropertyName("quantity")] public double Quantity { get => GetValue("quantity"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs index ec58c51a..de25b144 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class OrderSortInput : GraphInputBase { [GraphQLMember("orderId")] + [JsonPropertyName("orderId")] public SortEnumType? OrderId { get => GetValue("orderId"); @@ -23,6 +24,7 @@ public SortEnumType? OrderId } [GraphQLMember("customer")] + [JsonPropertyName("customer")] public CustomerSortInput Customer { get => GetValue("customer"); @@ -30,6 +32,7 @@ public CustomerSortInput Customer } [GraphQLMember("address")] + [JsonPropertyName("address")] public AddressSortInput Address { get => GetValue("address"); @@ -37,6 +40,7 @@ public AddressSortInput Address } [GraphQLMember("orderDate")] + [JsonPropertyName("orderDate")] public SortEnumType? OrderDate { get => GetValue("orderDate"); @@ -44,6 +48,7 @@ public SortEnumType? OrderDate } [GraphQLMember("entryTime")] + [JsonPropertyName("entryTime")] public SortEnumType? EntryTime { get => GetValue("entryTime"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs index 9b13b478..77e0c538 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/StringOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class StringOperationFilterInput : GraphInputBase { [GraphQLMember("and")] + [JsonPropertyName("and")] public List And { get => GetValue>("and"); @@ -23,6 +24,7 @@ public List And } [GraphQLMember("or")] + [JsonPropertyName("or")] public List Or { get => GetValue>("or"); @@ -30,6 +32,7 @@ public List Or } [GraphQLMember("eq")] + [JsonPropertyName("eq")] public string Eq { get => GetValue("eq"); @@ -37,6 +40,7 @@ public string Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public string Neq { get => GetValue("neq"); @@ -44,6 +48,7 @@ public string Neq } [GraphQLMember("contains")] + [JsonPropertyName("contains")] public string Contains { get => GetValue("contains"); @@ -51,6 +56,7 @@ public string Contains } [GraphQLMember("ncontains")] + [JsonPropertyName("ncontains")] public string Ncontains { get => GetValue("ncontains"); @@ -58,6 +64,7 @@ public string Ncontains } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -65,6 +72,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -72,6 +80,7 @@ public List Nin } [GraphQLMember("startsWith")] + [JsonPropertyName("startsWith")] public string StartsWith { get => GetValue("startsWith"); @@ -79,6 +88,7 @@ public string StartsWith } [GraphQLMember("nstartsWith")] + [JsonPropertyName("nstartsWith")] public string NstartsWith { get => GetValue("nstartsWith"); @@ -86,6 +96,7 @@ public string NstartsWith } [GraphQLMember("endsWith")] + [JsonPropertyName("endsWith")] public string EndsWith { get => GetValue("endsWith"); @@ -93,6 +104,7 @@ public string EndsWith } [GraphQLMember("nendsWith")] + [JsonPropertyName("nendsWith")] public string NendsWith { get => GetValue("nendsWith"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs index b36790d6..eb4e84b9 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/TimeSpanOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class TimeSpanOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public TimeSpan? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public TimeSpan? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public TimeSpan? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public TimeSpan? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public TimeSpan? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public TimeSpan? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public TimeSpan? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public TimeSpan? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public TimeSpan? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public TimeSpan? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public TimeSpan? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public TimeSpan? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public TimeSpan? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public TimeSpan? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public TimeSpan? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public TimeSpan? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public TimeSpan? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public TimeSpan? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public TimeSpan? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs index f7172525..87814ffe 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/UuidOperationFilterInput.cs @@ -16,6 +16,7 @@ namespace Linq2GraphQL.TestClient; public partial class UuidOperationFilterInput : GraphInputBase { [GraphQLMember("eq")] + [JsonPropertyName("eq")] public Guid? Eq { get => GetValue("eq"); @@ -23,6 +24,7 @@ public Guid? Eq } [GraphQLMember("neq")] + [JsonPropertyName("neq")] public Guid? Neq { get => GetValue("neq"); @@ -30,6 +32,7 @@ public Guid? Neq } [GraphQLMember("in")] + [JsonPropertyName("in")] public List In { get => GetValue>("in"); @@ -37,6 +40,7 @@ public List In } [GraphQLMember("nin")] + [JsonPropertyName("nin")] public List Nin { get => GetValue>("nin"); @@ -44,6 +48,7 @@ public List Nin } [GraphQLMember("gt")] + [JsonPropertyName("gt")] public Guid? Gt { get => GetValue("gt"); @@ -51,6 +56,7 @@ public Guid? Gt } [GraphQLMember("ngt")] + [JsonPropertyName("ngt")] public Guid? Ngt { get => GetValue("ngt"); @@ -58,6 +64,7 @@ public Guid? Ngt } [GraphQLMember("gte")] + [JsonPropertyName("gte")] public Guid? Gte { get => GetValue("gte"); @@ -65,6 +72,7 @@ public Guid? Gte } [GraphQLMember("ngte")] + [JsonPropertyName("ngte")] public Guid? Ngte { get => GetValue("ngte"); @@ -72,6 +80,7 @@ public Guid? Ngte } [GraphQLMember("lt")] + [JsonPropertyName("lt")] public Guid? Lt { get => GetValue("lt"); @@ -79,6 +88,7 @@ public Guid? Lt } [GraphQLMember("nlt")] + [JsonPropertyName("nlt")] public Guid? Nlt { get => GetValue("nlt"); @@ -86,6 +96,7 @@ public Guid? Nlt } [GraphQLMember("lte")] + [JsonPropertyName("lte")] public Guid? Lte { get => GetValue("lte"); @@ -93,6 +104,7 @@ public Guid? Lte } [GraphQLMember("nlte")] + [JsonPropertyName("nlte")] public Guid? Nlte { get => GetValue("nlte"); diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs index a1a1bc81..e922664e 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Address.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClient; public partial class Address : GraphQLTypeBase { [GraphQLMember("name")] + [JsonPropertyName("name")] public string Name { get; set; } [GraphQLMember("street")] + [JsonPropertyName("street")] public string Street { get; set; } [GraphQLMember("postalCode")] + [JsonPropertyName("postalCode")] public string PostalCode { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs index 99a69d69..02110582 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsConnection.cs @@ -23,24 +23,28 @@ public partial class AnimalsConnection : GraphQLTypeBase, Linq2GraphQL.Client.Co /// Information to aid in pagination. /// [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [GraphQLMember("edges")] + [JsonPropertyName("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [GraphQLMember("nodes")] + [JsonPropertyName("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [GraphQLMember("totalCount")] + [JsonPropertyName("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs index cd2c470f..a104943c 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/AnimalsEdge.cs @@ -23,12 +23,14 @@ public partial class AnimalsEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [GraphQLMember("cursor")] + [JsonPropertyName("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [GraphQLMember("node")] + [JsonPropertyName("node")] public IAnimal Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs index 0101f494..b2605bfe 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/CollectionSegmentInfo.cs @@ -23,12 +23,14 @@ public partial class CollectionSegmentInfo : GraphQLTypeBase /// Indicates whether more items exist following the set defined by the clients arguments. /// [GraphQLMember("hasNextPage")] + [JsonPropertyName("hasNextPage")] public bool HasNextPage { get; set; } /// /// Indicates whether more items exist prior the set defined by the clients arguments. /// [GraphQLMember("hasPreviousPage")] + [JsonPropertyName("hasPreviousPage")] public bool HasPreviousPage { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs index 3fa5c6d9..46ac50ca 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Customer.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClient; public partial class Customer : GraphQLTypeBase { [GraphQLMember("customerId")] + [JsonPropertyName("customerId")] public Guid CustomerId { get; set; } [GraphQLMember("customerName")] + [JsonPropertyName("customerName")] public string CustomerName { get; set; } [GraphQLMember("status")] + [JsonPropertyName("status")] public CustomerStatus Status { get; set; } [GraphQLMember("orders")] + [JsonPropertyName("orders")] public List Orders { get; set; } [GraphQLMember("address")] + [JsonPropertyName("address")] public Address Address { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs index 611591ee..5cc05426 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Item.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClient; public partial class Item : GraphQLTypeBase { [GraphQLMember("itemId")] + [JsonPropertyName("itemId")] public string ItemId { get; set; } [GraphQLMember("itemName")] + [JsonPropertyName("itemName")] public string ItemName { get; set; } [GraphQLMember("data")] + [JsonPropertyName("data")] public List Data { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs index 8809faeb..98c79c12 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs @@ -45,21 +45,27 @@ public partial class Order : GraphQLTypeBase public Address OrderAddress => _orderAddress.Value(() => GetFirstMethodValue
("orderAddress")); [GraphQLMember("orderId")] + [JsonPropertyName("orderId")] public Guid OrderId { get; set; } [GraphQLMember("customer")] + [JsonPropertyName("customer")] public Customer Customer { get; set; } [GraphQLMember("address")] + [JsonPropertyName("address")] public Address Address { get; set; } [GraphQLMember("orderDate")] + [JsonPropertyName("orderDate")] public DateTimeOffset OrderDate { get; set; } [GraphQLMember("lines")] + [JsonPropertyName("lines")] public List Lines { get; set; } [GraphQLMember("entryTime")] + [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs index 4fa87625..60f6014e 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrderLine.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClient; public partial class OrderLine : GraphQLTypeBase { [GraphQLMember("lineNumber")] + [JsonPropertyName("lineNumber")] public int LineNumber { get; set; } [GraphQLMember("order")] + [JsonPropertyName("order")] public Order Order { get; set; } [GraphQLMember("item")] + [JsonPropertyName("item")] public Item Item { get; set; } [GraphQLMember("price")] + [JsonPropertyName("price")] public decimal Price { get; set; } [GraphQLMember("quantity")] + [JsonPropertyName("quantity")] public double Quantity { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs index 4eeb9cd6..d8e05368 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersConnection.cs @@ -23,24 +23,28 @@ public partial class OrdersConnection : GraphQLTypeBase, Linq2GraphQL.Client.Com /// Information to aid in pagination. /// [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [GraphQLMember("edges")] + [JsonPropertyName("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [GraphQLMember("nodes")] + [JsonPropertyName("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [GraphQLMember("totalCount")] + [JsonPropertyName("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs index 22939c10..c004d3af 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [GraphQLMember("cursor")] + [JsonPropertyName("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [GraphQLMember("node")] + [JsonPropertyName("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs index a4adf1f8..5fd29022 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationConnection.cs @@ -23,24 +23,28 @@ public partial class OrdersNoBackwardPaginationConnection : GraphQLTypeBase, Lin /// Information to aid in pagination. /// [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [GraphQLMember("edges")] + [JsonPropertyName("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [GraphQLMember("nodes")] + [JsonPropertyName("nodes")] public List Nodes { get; set; } /// /// Identifies the total count of items in the connection. /// [GraphQLMember("totalCount")] + [JsonPropertyName("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs index c1c6303b..8ee3333b 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoBackwardPaginationEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersNoBackwardPaginationEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [GraphQLMember("cursor")] + [JsonPropertyName("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [GraphQLMember("node")] + [JsonPropertyName("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs index a74f9c10..277946b0 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountConnection.cs @@ -23,18 +23,21 @@ public partial class OrdersNoTotalCountConnection : GraphQLTypeBase, Linq2GraphQ /// Information to aid in pagination. /// [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public Linq2GraphQL.Client.Common.PageInfo PageInfo { get; set; } /// /// A list of edges. /// [GraphQLMember("edges")] + [JsonPropertyName("edges")] public List Edges { get; set; } /// /// A flattened list of the nodes. /// [GraphQLMember("nodes")] + [JsonPropertyName("nodes")] public List Nodes { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs index b7482faf..0176455a 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersNoTotalCountEdge.cs @@ -23,12 +23,14 @@ public partial class OrdersNoTotalCountEdge : GraphQLTypeBase /// A cursor for use in pagination. /// [GraphQLMember("cursor")] + [JsonPropertyName("cursor")] public string Cursor { get; set; } /// /// The item at the end of the edge. /// [GraphQLMember("node")] + [JsonPropertyName("node")] public Order Node { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs index 75b74329..b79f7891 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/OrdersOffsetPagingCollectionSegment.cs @@ -23,15 +23,18 @@ public partial class OrdersOffsetPagingCollectionSegment : GraphQLTypeBase /// Information to aid in pagination. /// [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public CollectionSegmentInfo PageInfo { get; set; } /// /// A flattened list of the items. /// [GraphQLMember("items")] + [JsonPropertyName("items")] public List Items { get; set; } [GraphQLMember("totalCount")] + [JsonPropertyName("totalCount")] public int TotalCount { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs index f924b632..050a4fc4 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Pig.cs @@ -17,17 +17,22 @@ namespace Linq2GraphQL.TestClient; public partial class Pig : GraphQLTypeBase, IAnimal { [GraphQLMember("name")] + [JsonPropertyName("name")] public string Name { get; set; } [GraphQLMember("numberOfLegs")] + [JsonPropertyName("numberOfLegs")] public int NumberOfLegs { get; set; } [GraphQLMember("speed")] + [JsonPropertyName("speed")] public int Speed { get; set; } [GraphQLMember("spices")] + [JsonPropertyName("spices")] public string Spices { get; set; } [GraphQLMember("__typename")] + [JsonPropertyName("__typename")] public string __TypeName { get; set; } } diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs index efed19f7..edcd952d 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Spider.cs @@ -17,17 +17,22 @@ namespace Linq2GraphQL.TestClient; public partial class Spider : GraphQLTypeBase, IAnimal { [GraphQLMember("name")] + [JsonPropertyName("name")] public string Name { get; set; } [GraphQLMember("numberOfLegs")] + [JsonPropertyName("numberOfLegs")] public int NumberOfLegs { get; set; } [GraphQLMember("speed")] + [JsonPropertyName("speed")] public int Speed { get; set; } [GraphQLMember("poisonous")] + [JsonPropertyName("poisonous")] public bool Poisonous { get; set; } [GraphQLMember("__typename")] + [JsonPropertyName("__typename")] public string __TypeName { get; set; } } From 28d11969f4307340e9ae1210a06c0183420999f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Fri, 10 Jan 2025 13:20:58 +0100 Subject: [PATCH 5/8] Fixed includes --- .../Common/ICursorPaging.cs | 1 + src/Linq2GraphQL.Client/Common/IPageInfo.cs | 7 +++++ src/Linq2GraphQL.Client/QueryNode.cs | 2 -- src/Linq2GraphQL.Client/Utilities.cs | 10 ++----- .../Visitors/MemberNode.cs | 16 ++++------- .../Visitors/ParameterVisitor.cs | 28 +++++++++++++++---- test/Linq2GraphQL.Tests/QueryPagingTests.cs | 4 ++- .../QueryProjectionTests.cs | 26 ++++++++++++++++- 8 files changed, 67 insertions(+), 27 deletions(-) diff --git a/src/Linq2GraphQL.Client/Common/ICursorPaging.cs b/src/Linq2GraphQL.Client/Common/ICursorPaging.cs index 8d602520..bfcb2664 100644 --- a/src/Linq2GraphQL.Client/Common/ICursorPaging.cs +++ b/src/Linq2GraphQL.Client/Common/ICursorPaging.cs @@ -10,6 +10,7 @@ namespace Linq2GraphQL.Client.Common public interface ICursorPaging { [GraphQLMember("pageInfo")] + [JsonPropertyName("pageInfo")] public PageInfo PageInfo { get; set; } } diff --git a/src/Linq2GraphQL.Client/Common/IPageInfo.cs b/src/Linq2GraphQL.Client/Common/IPageInfo.cs index d237a0db..46892be5 100644 --- a/src/Linq2GraphQL.Client/Common/IPageInfo.cs +++ b/src/Linq2GraphQL.Client/Common/IPageInfo.cs @@ -9,12 +9,19 @@ namespace Linq2GraphQL.Client.Common { public class PageInfo { + [GraphQLMember("hasNextPage")] [JsonPropertyName("hasNextPage")] public bool HasNextPage { get; set; } + + [GraphQLMember("hasPreviousPage")] [JsonPropertyName("hasPreviousPage")] public bool HasPreviousPage { get; set; } + + [GraphQLMember("startCursor")] [JsonPropertyName("startCursor")] public string StartCursor { get; set; } + + [GraphQLMember("endCursor")] [JsonPropertyName("endCursor")] public string EndCursor { get; set; } diff --git a/src/Linq2GraphQL.Client/QueryNode.cs b/src/Linq2GraphQL.Client/QueryNode.cs index 1cc458e9..7f298b8e 100644 --- a/src/Linq2GraphQL.Client/QueryNode.cs +++ b/src/Linq2GraphQL.Client/QueryNode.cs @@ -131,8 +131,6 @@ public void AddPrimitiveChildren(bool recursive, GraphQLSchema schema) foreach (var propertyInfo in typeOrListType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { - - if (!propertyInfo.PropertyType.IsValueTypeOrString()) { continue; diff --git a/src/Linq2GraphQL.Client/Utilities.cs b/src/Linq2GraphQL.Client/Utilities.cs index 486dd7ca..acf35962 100644 --- a/src/Linq2GraphQL.Client/Utilities.cs +++ b/src/Linq2GraphQL.Client/Utilities.cs @@ -35,16 +35,10 @@ public static void ParseExpression(Expression body, QueryNode parent) var topNode = parameterVisitor.ParseExpression(body); var tree = topNode.PrintMemberTree(); - - topNode.PopulateChildQueryNodes(parent); + // parent.SetAddPrimitiveChildren(); - parent.SetAddPrimitiveChildren(); - - //foreach (var childNode in node.ChildNodes) - //{ - // parent.AddChildNode(childNode); - //} + } diff --git a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs index 310fe60f..6bcb2dea 100644 --- a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs +++ b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs @@ -15,7 +15,6 @@ public class MemberNode(MemberInfo memberInfo, List arguments = n public List Children { get; set; } = []; public List Arguments => arguments; - public void SetParameterExpression(ParameterExpression param) { parameterExpression = param; @@ -74,12 +73,13 @@ private static List GetMembers(Expression expression) public void PopulateChildQueryNodes(QueryNode queryNode) { - + foreach (var child in Children) { var childNode = new QueryNode(child.MemberInfo, null, child.Arguments); + childNode.IncludePrimitive = child.Children.Count == 0; var addedNode = queryNode.AddChildNode(childNode); child.PopulateChildQueryNodes(addedNode); } @@ -92,9 +92,6 @@ public void PopulateChildQueryNodes(QueryNode queryNode) public string PrintMemberTree(int level = 0) { var sb = new StringBuilder(); - //var cc = Children.Select(e => new { e.MemberInfo, e.Arguments, e.MemberInfo.MetadataToken }).Distinct(); - //var c = cc.Count(); - sb.AppendLine($"Level: {level}"); level++; @@ -103,17 +100,16 @@ public string PrintMemberTree(int level = 0) { var argumentList = $"({string.Join(", ", Arguments.Select(e => e.Value))})"; - sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"}{argumentList}"); + sb.AppendLine($"Member: {MemberInfo?.Name}{argumentList}"); } else { - sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"} "); + sb.AppendLine($"Member: {MemberInfo?.Name} "); } sb.AppendLine($"Parent: {Parent?.MemberInfo?.Name}"); - sb.AppendLine($"Parameter: {parameterExpression?.Name}"); - + sb.AppendLine(""); foreach (var child in Children) @@ -121,7 +117,7 @@ public string PrintMemberTree(int level = 0) sb.Append(child.PrintMemberTree(level)); } - sb.AppendLine(""); + sb.AppendLine("".PadLeft(level, '-')); return sb.ToString(); diff --git a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs index ff1a0ea3..47ddb278 100644 --- a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs +++ b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs @@ -2,7 +2,9 @@ using Linq2GraphQL.Client.Visitors; using System.Linq.Expressions; using System.Reflection; +using System.Reflection.Metadata; using System.Runtime.CompilerServices; +using System.Xml.Linq; namespace VisitorPlayground.Visitors { @@ -24,8 +26,11 @@ protected override Expression VisitMember(MemberExpression node) if (attribute != null) { var parameter = GetParameterExpression(node); - var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter); - targetNode.AddMembers(node); + + AddMemberNodes(parameter, node); + + // var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter); + // targetNode.AddMembers(node); } return node; @@ -33,6 +38,16 @@ protected override Expression VisitMember(MemberExpression node) } + public MemberNode AddMemberNodes(ParameterExpression targetParameter, Expression expression) + { + var targetNode = memberNode.GetMemberNodeFromParameterExpression(targetParameter); + var newNode = targetNode.AddMembers(expression); + return newNode; + + } + + + protected override Expression VisitMethodCall(MethodCallExpression expression) { var attribute = expression.Method.GetCustomAttribute(); @@ -57,6 +72,8 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) i++; } + + var targetNode = memberNode.GetMemberNodeFromParameterExpression(parExp); targetNode.AddChild(new MemberNode(expression.Method, argumentValues)); @@ -74,11 +91,12 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) { var parameter = GetParameterExpression(expression.Arguments[1]); - //var child = new MemberNode(memberExp.Member, null, parameter); - //memberNode.AddChild(child); - var child = memberNode.AddMembers(memberExp); child.SetParameterExpression(parameter); + + + //var child = AddMemberNodes(parameter, memberExp); + //child.IncludePrimitive = false; var visitor = new ParameterVisitor(child); visitor.ParseExpression(expression.Arguments[1]); diff --git a/test/Linq2GraphQL.Tests/QueryPagingTests.cs b/test/Linq2GraphQL.Tests/QueryPagingTests.cs index 16e4f822..f1049c10 100644 --- a/test/Linq2GraphQL.Tests/QueryPagingTests.cs +++ b/test/Linq2GraphQL.Tests/QueryPagingTests.cs @@ -27,7 +27,9 @@ public async Task Orders_ManualPaging() .Include(e => e.PageInfo) .Include(e => e.TotalCount) .Select(e => e.Nodes.Select(e => new { e.OrderId, e.OrderDate })); - + + var request = await query.GetRequestAsync(); + await query.ExecuteBaseAsync(); var result1 = query.ConvertResult(query.BaseResult); diff --git a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs index c2d460cb..e360010b 100644 --- a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs +++ b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs @@ -60,13 +60,37 @@ public async Task Project_SelectMany() .Customers() .Select(e => e.SelectMany(e=> e.Orders)); - // var request = await query.GetRequestAsync(); var result = await query.ExecuteAsync(); + Assert.True(result.All(e=> e.OrderId != default)); + } + [Fact] + public async Task Project_Complex() + { + //var query = sampleClient + // .Query + // .Customers() + // .Select(e => new { Orders = e.SelectMany(e => e.Orders), Customers = e, CustomerIds =e.Select(e=> e.CustomerId).Distinct() }); + + + var query = sampleClient + .Query + .Customers() + .Select(e => new { Customers = e }); + + var request = await query.GetRequestAsync(); + + var result = await query.ExecuteAsync(); + + var t = result.Customers; + + + } + } From 762d3f52e7ded18bf1f38427433402f949556fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Fri, 10 Jan 2025 13:28:44 +0100 Subject: [PATCH 6/8] Remoted SetAllPrimitive --- src/Linq2GraphQL.Client/QueryNode.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/Linq2GraphQL.Client/QueryNode.cs b/src/Linq2GraphQL.Client/QueryNode.cs index 7f298b8e..4f5b69e2 100644 --- a/src/Linq2GraphQL.Client/QueryNode.cs +++ b/src/Linq2GraphQL.Client/QueryNode.cs @@ -62,17 +62,6 @@ private static bool MustHaveChildren(Type type) !type.IsListOfPrimitiveTypeOrString(); } - public void SetAddPrimitiveChildren() - { - if (!ChildNodes.Any()) - { - IncludePrimitive = true; - } - foreach (var childNode in ChildNodes) - { - childNode.SetAddPrimitiveChildren(); - } - } public void AddChildNode(MemberInfo member, string name = null) { From 62a51d0275211a776858841a37f4ec81031de84b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Fri, 10 Jan 2025 16:15:59 +0100 Subject: [PATCH 7/8] Updated Nullable Client --- src/Linq2GraphQL.Client/Utilities.cs | 172 ------------------ .../Visitors/MemberNode.cs | 5 - .../Visitors/ParameterVisitor.cs | 21 +-- .../Properties/launchSettings.json | 2 +- .../Generated/Client/SampleNullableClient.cs | 2 +- .../Client/SampleNullableClientExtensions.cs | 2 +- .../Generated/Inputs/AddressInput.cs | 3 + .../Generated/Inputs/CustomerInput.cs | 5 + .../Generated/Inputs/ItemInput.cs | 3 + .../Generated/Inputs/OrderInput.cs | 6 + .../Generated/Inputs/OrderLineInput.cs | 5 + .../Generated/Inputs/PersonInput.cs | 3 + .../Generated/Types/Address.cs | 3 + .../Generated/Types/Customer.cs | 5 + .../Generated/Types/Item.cs | 3 + .../Generated/Types/Order.cs | 16 +- .../Generated/Types/OrderLine.cs | 5 + .../Generated/Types/Person.cs | 3 + test/Linq2GraphQL.Tests/QueryIncludeTests.cs | 2 +- .../QueryProjectionTests.cs | 11 +- 20 files changed, 63 insertions(+), 214 deletions(-) diff --git a/src/Linq2GraphQL.Client/Utilities.cs b/src/Linq2GraphQL.Client/Utilities.cs index acf35962..b0a0e248 100644 --- a/src/Linq2GraphQL.Client/Utilities.cs +++ b/src/Linq2GraphQL.Client/Utilities.cs @@ -1,9 +1,5 @@ using Linq2GraphQL.Client.Visitors; using System.Linq.Expressions; -using System.Reflection; -using System.Reflection.Metadata.Ecma335; -using VisitorPlayground.Visitors; - namespace Linq2GraphQL.Client; public static class Utilities @@ -26,182 +22,14 @@ public static string GetArgumentsId(IEnumerable objects) } } - - public static void ParseExpression(Expression body, QueryNode parent) { - var parameterVisitor = new ParameterVisitor(new MemberNode(null, null)); var topNode = parameterVisitor.ParseExpression(body); var tree = topNode.PrintMemberTree(); topNode.PopulateChildQueryNodes(parent); - // parent.SetAddPrimitiveChildren(); - } - - - //public static void ParseExpression_OLD(Expression body, QueryNode parent) - //{ - // var node = new QueryNode(parent.Member); - // ParseExpressionInternal(body, node); - // node.SetAddPrimitiveChildren(); - - // foreach (var childNode in node.ChildNodes) - // { - // parent.AddChildNode(childNode); - // } - //} - - //private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression) - //{ - // if (methodCallExpression.Arguments.Count != 2) - // { - // return false; - // } - - // ; - // var methodName = methodCallExpression.Method.Name; - // return (methodName == "Select" || methodName == "SelectMany"); - //} - - - //private static void ParseExpressionInternal(Expression body, QueryNode parent) - //{ - // if (body.NodeType == ExpressionType.MemberInit) - // { - // var exp = (MemberInitExpression)body; - // foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment) - // .Cast()) - // { - // ParseExpressionInternal(binding.Expression, parent); - // } - // } - - // switch (body) - // { - // case LambdaExpression lambdaExpression: - // ParseExpressionInternal(lambdaExpression.Body, parent); - // break; - - // case MemberExpression memberExpression: - // var (parentNode, _) = GetMemberQueryNode(memberExpression); - // parent.AddChildNode(parentNode); - // break; - - // case MethodCallExpression methodCallExp: - // ParseMethodCallExpression(parent, methodCallExp); - // break; - - // case NewExpression newExpression: - // foreach (var argument in newExpression.Arguments) - // { - // ParseExpression(argument, parent); - // } - - // break; - // } - //} - - //private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp) - //{ - // var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute(); - // if (graphInterfaceAttribute != null) - // { - // var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true); - // parent.AddChildNode(queryNode); - // return; - // } - - // var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute(); - // if (graphMethodAttribute != null) - // { - // var arguments = new List(); - - // var i = 0; - // foreach (var parameter in methodCallExp.Method.GetParameters()) - // { - // var graphAttribute = parameter.GetCustomAttribute(); - // if (graphAttribute != null) - // { - // var arg = methodCallExp.Arguments[i]; - // ConstantExpression argConstant; - // if (arg.NodeType == ExpressionType.Convert) - // { - // var unaryExpression = (UnaryExpression)arg; - // argConstant = (ConstantExpression)unaryExpression.Operand; - // } - // else - // { - // argConstant = (ConstantExpression)arg; - // } - - // arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType, - // argConstant.Value)); - // } - - // i++; - // } - - // var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments); - // parent.AddChildNode(queryNode); - // } - // else if (methodCallExp.IsSelectOrSelectMany()) - // { - // if (methodCallExp.Arguments[0] is MemberExpression memberExpr) - // { - // var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr); - // ParseExpressionInternal(methodCallExp.Arguments[1], LastNode); - // parent.AddChildNode(ParentNode); - // } - // else - // { - // ParseExpressionInternal(methodCallExp.Arguments[1], parent); - // } - // } - //} - - //private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression) - //{ - // var members = GetMembers(expression); - // if (members == null) return (null, null); - - // members.Reverse(); - - // QueryNode parentNode = null; - // QueryNode currentNode = null; - - // foreach (var member in members) - // { - // var newNode = new QueryNode(member); - // if (parentNode == null) - // { - // parentNode = newNode; - // } - // else - // { - // currentNode.AddChildNode(newNode); - // } - - // currentNode = newNode; - // } - - // return (parentNode, currentNode); - //} - - - //private static List GetMembers(Expression expression) - //{ - // var members = new List(); - // if (expression.NodeType == ExpressionType.MemberAccess) - // { - // var memberExpression = (MemberExpression)expression; - // members.Add(memberExpression.Member); - // members.AddRange(GetMembers(memberExpression.Expression)); - // } - - // return members; - //} } \ No newline at end of file diff --git a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs index 6bcb2dea..83f5b88c 100644 --- a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs +++ b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs @@ -73,8 +73,6 @@ private static List GetMembers(Expression expression) public void PopulateChildQueryNodes(QueryNode queryNode) { - - foreach (var child in Children) { @@ -83,9 +81,6 @@ public void PopulateChildQueryNodes(QueryNode queryNode) var addedNode = queryNode.AddChildNode(childNode); child.PopulateChildQueryNodes(addedNode); } - - - } diff --git a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs index 47ddb278..25bc8265 100644 --- a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs +++ b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs @@ -1,12 +1,11 @@ using Linq2GraphQL.Client; -using Linq2GraphQL.Client.Visitors; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Metadata; using System.Runtime.CompilerServices; using System.Xml.Linq; -namespace VisitorPlayground.Visitors +namespace Linq2GraphQL.Client.Visitors { public class ParameterVisitor(MemberNode memberNode) : ExpressionVisitor { @@ -17,8 +16,6 @@ public MemberNode ParseExpression(Expression expression) return memberNode; } - - protected override Expression VisitMember(MemberExpression node) { var attribute = node.Member.GetCustomAttribute(); @@ -26,35 +23,25 @@ protected override Expression VisitMember(MemberExpression node) if (attribute != null) { var parameter = GetParameterExpression(node); - AddMemberNodes(parameter, node); - - // var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter); - // targetNode.AddMembers(node); } return node; - } - public MemberNode AddMemberNodes(ParameterExpression targetParameter, Expression expression) { var targetNode = memberNode.GetMemberNodeFromParameterExpression(targetParameter); var newNode = targetNode.AddMembers(expression); return newNode; - } - - protected override Expression VisitMethodCall(MethodCallExpression expression) { var attribute = expression.Method.GetCustomAttribute(); if (attribute != null) { - var parExp = GetParameterExpression(expression); var i = 0; var argumentValues = new List(); @@ -72,8 +59,6 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) i++; } - - var targetNode = memberNode.GetMemberNodeFromParameterExpression(parExp); targetNode.AddChild(new MemberNode(expression.Method, argumentValues)); @@ -81,7 +66,6 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) return expression; } - if (IsLinqOperator(expression.Method)) { var memberExp = expression.Arguments[0] as MemberExpression; @@ -93,10 +77,7 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) var child = memberNode.AddMembers(memberExp); child.SetParameterExpression(parameter); - - //var child = AddMemberNodes(parameter, memberExp); - //child.IncludePrimitive = false; var visitor = new ParameterVisitor(child); visitor.ParseExpression(expression.Arguments[1]); diff --git a/src/Linq2GraphQL.Generator/Properties/launchSettings.json b/src/Linq2GraphQL.Generator/Properties/launchSettings.json index 60320b12..7adb1150 100644 --- a/src/Linq2GraphQL.Generator/Properties/launchSettings.json +++ b/src/Linq2GraphQL.Generator/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "Linq2GraphQL.Generator": { "commandName": "Project", - "commandLineArgs": "https://localhost:7184/graphql/ -c=\"SampleClient\" -n=\"Linq2GraphQL.TestClient\" -o=\"C:\\Code\\Github\\Linq2GraphQL.Client\\test\\Linq2GraphQL.TestClient\\Generated\" -s=true" + "commandLineArgs": "https://localhost:50741/graphql/ -c=\"SampleNullableClient\" -n=\"Linq2GraphQL.TestClientNullable\" -o=\"C:\\Code\\Github\\Linq2GraphQL.Client\\test\\Linq2GraphQL.TestClientNullable\\Generated\" -s=true -nu=true" } } } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClient.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClient.cs index 0fde746d..377537b0 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClient.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClient.cs @@ -14,7 +14,7 @@ namespace Linq2GraphQL.TestClientNullable; public class SampleNullableClient { - public SampleNullableClient(HttpClient httpClient, IOptions options, IServiceProvider provider) + public SampleNullableClient(HttpClient httpClient, [FromKeyedServices("SampleNullableClient")]IOptions options, IServiceProvider provider) { var client = new GraphClient(httpClient, options, provider); Query = new QueryMethods(client); diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClientExtensions.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClientExtensions.cs index ed6582c5..064eca1c 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClientExtensions.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Client/SampleNullableClientExtensions.cs @@ -33,7 +33,7 @@ private static IGraphClientBuilder GraphClientBuilder(ISer GraphClientOptions graphClientOptions) { var opts = Options.Create(graphClientOptions); - services.AddSingleton(opts); + services.AddKeyedSingleton(ClientName, opts); services.AddMemoryCache(); return new ClientBuilder(ClientName, services); } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/AddressInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/AddressInput.cs index b644e606..041c0220 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/AddressInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/AddressInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class AddressInput : GraphInputBase { + [GraphQLMember("name")] [JsonPropertyName("name")] public required string Name { @@ -22,6 +23,7 @@ public required string Name set => SetValue("name", value); } + [GraphQLMember("street")] [JsonPropertyName("street")] public required string Street { @@ -29,6 +31,7 @@ public required string Street set => SetValue("street", value); } + [GraphQLMember("postalCode")] [JsonPropertyName("postalCode")] public required string PostalCode { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/CustomerInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/CustomerInput.cs index 28492e9c..f8545f2c 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/CustomerInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/CustomerInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class CustomerInput : GraphInputBase { + [GraphQLMember("customerId")] [JsonPropertyName("customerId")] public required Guid CustomerId { @@ -22,6 +23,7 @@ public required Guid CustomerId set => SetValue("customerId", value); } + [GraphQLMember("customerName")] [JsonPropertyName("customerName")] public required string CustomerName { @@ -29,6 +31,7 @@ public required string CustomerName set => SetValue("customerName", value); } + [GraphQLMember("status")] [JsonPropertyName("status")] public required CustomerStatus Status { @@ -36,6 +39,7 @@ public required CustomerStatus Status set => SetValue("status", value); } + [GraphQLMember("orders")] [JsonPropertyName("orders")] public required List Orders { @@ -43,6 +47,7 @@ public required List Orders set => SetValue("orders", value); } + [GraphQLMember("address")] [JsonPropertyName("address")] public AddressInput? Address { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/ItemInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/ItemInput.cs index e726451c..51d98fcf 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/ItemInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/ItemInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class ItemInput : GraphInputBase { + [GraphQLMember("itemId")] [JsonPropertyName("itemId")] public required string ItemId { @@ -22,6 +23,7 @@ public required string ItemId set => SetValue("itemId", value); } + [GraphQLMember("itemName")] [JsonPropertyName("itemName")] public required string ItemName { @@ -29,6 +31,7 @@ public required string ItemName set => SetValue("itemName", value); } + [GraphQLMember("data")] [JsonPropertyName("data")] public List? Data { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs index f613cc03..d1a8efa0 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderInput : GraphInputBase { + [GraphQLMember("orderId")] [JsonPropertyName("orderId")] public required Guid OrderId { @@ -22,6 +23,7 @@ public required Guid OrderId set => SetValue("orderId", value); } + [GraphQLMember("customer")] [JsonPropertyName("customer")] public required CustomerInput Customer { @@ -29,6 +31,7 @@ public required CustomerInput Customer set => SetValue("customer", value); } + [GraphQLMember("address")] [JsonPropertyName("address")] public AddressInput? Address { @@ -36,6 +39,7 @@ public AddressInput? Address set => SetValue("address", value); } + [GraphQLMember("orderDate")] [JsonPropertyName("orderDate")] public required DateTimeOffset OrderDate { @@ -43,6 +47,7 @@ public required DateTimeOffset OrderDate set => SetValue("orderDate", value); } + [GraphQLMember("lines")] [JsonPropertyName("lines")] public required List Lines { @@ -50,6 +55,7 @@ public required List Lines set => SetValue("lines", value); } + [GraphQLMember("entryTime")] [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderLineInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderLineInput.cs index f816b937..36f37750 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderLineInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderLineInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class OrderLineInput : GraphInputBase { + [GraphQLMember("lineNumber")] [JsonPropertyName("lineNumber")] public required int LineNumber { @@ -22,6 +23,7 @@ public required int LineNumber set => SetValue("lineNumber", value); } + [GraphQLMember("order")] [JsonPropertyName("order")] public required OrderInput Order { @@ -29,6 +31,7 @@ public required OrderInput Order set => SetValue("order", value); } + [GraphQLMember("item")] [JsonPropertyName("item")] public ItemInput? Item { @@ -36,6 +39,7 @@ public ItemInput? Item set => SetValue("item", value); } + [GraphQLMember("price")] [JsonPropertyName("price")] public required decimal Price { @@ -43,6 +47,7 @@ public required decimal Price set => SetValue("price", value); } + [GraphQLMember("quantity")] [JsonPropertyName("quantity")] public required double Quantity { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/PersonInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/PersonInput.cs index 3bd8b2df..30cdc141 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/PersonInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/PersonInput.cs @@ -15,6 +15,7 @@ namespace Linq2GraphQL.TestClientNullable; [JsonConverter(typeof(GraphInputConverter))] public partial class PersonInput : GraphInputBase { + [GraphQLMember("name")] [JsonPropertyName("name")] public required string Name { @@ -22,6 +23,7 @@ public required string Name set => SetValue("name", value); } + [GraphQLMember("macAddress")] [JsonPropertyName("macAddress")] public MacAddress? MacAddress { @@ -29,6 +31,7 @@ public MacAddress? MacAddress set => SetValue("macAddress", value); } + [GraphQLMember("longitude")] [JsonPropertyName("longitude")] public Longitude? Longitude { diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Address.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Address.cs index e45050e1..37ba23d7 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Address.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Address.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClientNullable; public partial class Address : GraphQLTypeBase { + [GraphQLMember("name")] [JsonPropertyName("name")] public string Name { get; set; } + [GraphQLMember("street")] [JsonPropertyName("street")] public string Street { get; set; } + [GraphQLMember("postalCode")] [JsonPropertyName("postalCode")] public string PostalCode { get; set; } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Customer.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Customer.cs index 034f8bbf..9b52e63f 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Customer.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Customer.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClientNullable; public partial class Customer : GraphQLTypeBase { + [GraphQLMember("customerId")] [JsonPropertyName("customerId")] public Guid CustomerId { get; set; } + [GraphQLMember("customerName")] [JsonPropertyName("customerName")] public string CustomerName { get; set; } + [GraphQLMember("status")] [JsonPropertyName("status")] public CustomerStatus Status { get; set; } + [GraphQLMember("orders")] [JsonPropertyName("orders")] public List Orders { get; set; } + [GraphQLMember("address")] [JsonPropertyName("address")] public Address? Address { get; set; } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Item.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Item.cs index 1737202f..f1b1dfcc 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Item.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Item.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClientNullable; public partial class Item : GraphQLTypeBase { + [GraphQLMember("itemId")] [JsonPropertyName("itemId")] public string ItemId { get; set; } + [GraphQLMember("itemName")] [JsonPropertyName("itemName")] public string ItemName { get; set; } + [GraphQLMember("data")] [JsonPropertyName("data")] public List? Data { get; set; } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs index f9fcc341..a72eeb52 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs @@ -17,14 +17,14 @@ namespace Linq2GraphQL.TestClientNullable; public static class OrderExtensions { - [GraphMethod("orderHello")] - public static string OrderHello(this Order order, [GraphArgument("String!")] string name, [GraphArgument("Int!")] int first) + [GraphQLMember("orderHello")] + public static string OrderHello(this Order order, [GraphQLArgument("name", "String!")] string name, [GraphQLArgument("first", "Int!")] int first) { return order.GetMethodValue("orderHello", name, first); } - [GraphMethod("orderAddress")] - public static Address OrderAddress(this Order order, [GraphArgument("AddressType!")] AddressType addressType) + [GraphQLMember("orderAddress")] + public static Address OrderAddress(this Order order, [GraphQLArgument("addressType", "AddressType!")] AddressType addressType) { return order.GetMethodValue
("orderAddress", addressType); } @@ -37,31 +37,35 @@ public partial class Order : GraphQLTypeBase /// /// Do not use in Query, only to retrive result /// - [GraphShadowProperty] public string OrderHello => _orderHello.Value(() => GetFirstMethodValue("orderHello")); private LazyProperty
_orderAddress = new(); /// /// Do not use in Query, only to retrive result /// - [GraphShadowProperty] public Address OrderAddress => _orderAddress.Value(() => GetFirstMethodValue
("orderAddress")); + [GraphQLMember("orderId")] [JsonPropertyName("orderId")] public Guid OrderId { get; set; } + [GraphQLMember("customer")] [JsonPropertyName("customer")] public Customer Customer { get; set; } + [GraphQLMember("address")] [JsonPropertyName("address")] public Address? Address { get; set; } + [GraphQLMember("orderDate")] [JsonPropertyName("orderDate")] public DateTimeOffset OrderDate { get; set; } + [GraphQLMember("lines")] [JsonPropertyName("lines")] public List Lines { get; set; } + [GraphQLMember("entryTime")] [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { get; set; } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/OrderLine.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/OrderLine.cs index c109fc9f..a3abe7bb 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/OrderLine.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/OrderLine.cs @@ -17,18 +17,23 @@ namespace Linq2GraphQL.TestClientNullable; public partial class OrderLine : GraphQLTypeBase { + [GraphQLMember("lineNumber")] [JsonPropertyName("lineNumber")] public int LineNumber { get; set; } + [GraphQLMember("order")] [JsonPropertyName("order")] public Order Order { get; set; } + [GraphQLMember("item")] [JsonPropertyName("item")] public Item? Item { get; set; } + [GraphQLMember("price")] [JsonPropertyName("price")] public decimal Price { get; set; } + [GraphQLMember("quantity")] [JsonPropertyName("quantity")] public double Quantity { get; set; } diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Person.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Person.cs index b0147e12..8aa56407 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Person.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Person.cs @@ -17,12 +17,15 @@ namespace Linq2GraphQL.TestClientNullable; public partial class Person : GraphQLTypeBase { + [GraphQLMember("name")] [JsonPropertyName("name")] public string Name { get; set; } + [GraphQLMember("macAddress")] [JsonPropertyName("macAddress")] public MacAddress? MacAddress { get; set; } + [GraphQLMember("longitude")] [JsonPropertyName("longitude")] public Longitude? Longitude { get; set; } diff --git a/test/Linq2GraphQL.Tests/QueryIncludeTests.cs b/test/Linq2GraphQL.Tests/QueryIncludeTests.cs index 2de0a377..4c4eef4a 100644 --- a/test/Linq2GraphQL.Tests/QueryIncludeTests.cs +++ b/test/Linq2GraphQL.Tests/QueryIncludeTests.cs @@ -33,7 +33,7 @@ public async Task IncludePrimitives_MultipleLevels() var query = sampleClient .Query .Orders(first: 1) - .Include(e => e.Nodes.Select(e => e.Customer)) + .Include(e => e.Nodes.Select(e => e.Customer)) .Include(e => e.Nodes.Select(e => e.Customer.Orders)) .Select(e => e.Nodes); diff --git a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs index e360010b..aa772cd7 100644 --- a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs +++ b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs @@ -71,23 +71,20 @@ public async Task Project_SelectMany() [Fact] public async Task Project_Complex() { - //var query = sampleClient - // .Query - // .Customers() - // .Select(e => new { Orders = e.SelectMany(e => e.Orders), Customers = e, CustomerIds =e.Select(e=> e.CustomerId).Distinct() }); - + var query = sampleClient .Query .Customers() - .Select(e => new { Customers = e }); + .Select(e => new { Customers = e, Orders = e.SelectMany(e=> e.Orders) }); var request = await query.GetRequestAsync(); var result = await query.ExecuteAsync(); - var t = result.Customers; + var t = result.Customers.All(e => e.CustomerId != default); + Assert.True(result.Customers.All(e => e.CustomerId != default)); } From 59583721a4de7c06e84406f78c8e9529f4b087c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Wed, 19 Mar 2025 14:29:02 +0100 Subject: [PATCH 8/8] Fiex include top node --- src/Linq2GraphQL.Client/GraphBase.cs | 11 +++++++ src/Linq2GraphQL.Client/Utilities.cs | 3 +- .../Visitors/MemberNode.cs | 6 ++-- .../Visitors/ParameterVisitor.cs | 29 +++++++++++++++---- .../QueryProjectionTests.cs | 12 ++++---- 5 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/Linq2GraphQL.Client/GraphBase.cs b/src/Linq2GraphQL.Client/GraphBase.cs index cce7e94a..03c7e948 100644 --- a/src/Linq2GraphQL.Client/GraphBase.cs +++ b/src/Linq2GraphQL.Client/GraphBase.cs @@ -17,6 +17,17 @@ public GraphBase(GraphClient client, string name, OperationType operationType, L public QueryNode QueryNode { get; } + + /// + /// Include top node + /// + /// + public TGraph Include() + { + QueryNode.IncludePrimitive = true; + return (TGraph)(object)this; + } + public TGraph Include(Expression> path) { Utilities.ParseExpression(path, QueryNode); diff --git a/src/Linq2GraphQL.Client/Utilities.cs b/src/Linq2GraphQL.Client/Utilities.cs index b0a0e248..dd9741af 100644 --- a/src/Linq2GraphQL.Client/Utilities.cs +++ b/src/Linq2GraphQL.Client/Utilities.cs @@ -26,8 +26,7 @@ public static void ParseExpression(Expression body, QueryNode parent) { var parameterVisitor = new ParameterVisitor(new MemberNode(null, null)); var topNode = parameterVisitor.ParseExpression(body); - var tree = topNode.PrintMemberTree(); - + topNode.PopulateChildQueryNodes(parent); } diff --git a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs index 83f5b88c..3d5b69f3 100644 --- a/src/Linq2GraphQL.Client/Visitors/MemberNode.cs +++ b/src/Linq2GraphQL.Client/Visitors/MemberNode.cs @@ -5,9 +5,8 @@ namespace Linq2GraphQL.Client.Visitors { - public class MemberNode(MemberInfo memberInfo, List arguments = null, ParameterExpression parameterExpression = null) + internal class MemberNode(MemberInfo memberInfo, List arguments = null, ParameterExpression parameterExpression = null) { - public string ParameterName => parameterExpression?.Name; public MemberInfo MemberInfo => memberInfo; @@ -67,7 +66,7 @@ private static List GetMembers(Expression expression) members.Add(memberExpression.Member); members.AddRange(GetMembers(memberExpression.Expression)); } - + return members; } @@ -75,7 +74,6 @@ public void PopulateChildQueryNodes(QueryNode queryNode) { foreach (var child in Children) { - var childNode = new QueryNode(child.MemberInfo, null, child.Arguments); childNode.IncludePrimitive = child.Children.Count == 0; var addedNode = queryNode.AddChildNode(childNode); diff --git a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs index 25bc8265..d3d94981 100644 --- a/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs +++ b/src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs @@ -7,7 +7,7 @@ namespace Linq2GraphQL.Client.Visitors { - public class ParameterVisitor(MemberNode memberNode) : ExpressionVisitor + internal class ParameterVisitor(MemberNode memberNode) : ExpressionVisitor { public MemberNode ParseExpression(Expression expression) @@ -52,9 +52,7 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) { var arg = expression.Arguments[i]; var v = GetArgumentValue(arg); - argumentValues.Add(new ArgumentValue(graphQLArgumentAttribute.GraphQLName, graphQLArgumentAttribute.GraphQLType, GetArgumentValue(arg))); - } i++; } @@ -74,11 +72,9 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) if (attr != null) { var parameter = GetParameterExpression(expression.Arguments[1]); - var child = memberNode.AddMembers(memberExp); child.SetParameterExpression(parameter); - var visitor = new ParameterVisitor(child); visitor.ParseExpression(expression.Arguments[1]); return expression; @@ -88,6 +84,29 @@ protected override Expression VisitMethodCall(MethodCallExpression expression) return base.VisitMethodCall(expression); } + + + protected override Expression VisitLambda(Expression node) + { + var newExp = node.Body as NewExpression; + return base.VisitLambda(node); + } + + //protected override Expression VisitNew(NewExpression node) + //{ + + // if (memberNode.ParameterName != null && node.Arguments.Any(e=> e.NodeType == ExpressionType.Parameter)) + // { + + + + // } + + + // return base.VisitNew(node); + //} + + private static object GetArgumentValue(Expression element) { if (element is ConstantExpression) diff --git a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs index aa772cd7..ab62ef3c 100644 --- a/test/Linq2GraphQL.Tests/QueryProjectionTests.cs +++ b/test/Linq2GraphQL.Tests/QueryProjectionTests.cs @@ -67,23 +67,21 @@ public async Task Project_SelectMany() } - + [Fact] - public async Task Project_Complex() + public async Task Project_TopLevelAllPrimitive() { - var query = sampleClient .Query .Customers() - .Select(e => new { Customers = e, Orders = e.SelectMany(e=> e.Orders) }); + .Include() + .Select(e => new { Customers = e, Orders = e.SelectMany(f => f.Orders) }); var request = await query.GetRequestAsync(); - var result = await query.ExecuteAsync(); - var t = result.Customers.All(e => e.CustomerId != default); - + Assert.True(result.Customers.All(e => e.CustomerId != default)); }