From 9e0a55b7e36a4c9ff2bd3a342ec8c1ee09e299a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 27 Mar 2025 21:42:52 +0100 Subject: [PATCH 1/2] added initial support for obsolete attributes --- src/Linq2GraphQL.Generator/General.cs | 12 +- .../GraphQLSchema/RootSchema.cs | 14 +- .../Templates/Class/ClassTemplate.cs | 138 +++++++++++++----- .../Templates/Class/ClassTemplate.tt | 9 ++ .../Templates/Class/InputClassTemplate.cs | 36 ++++- .../Templates/Class/InputClassTemplate.tt | 3 + .../Templates/Enum/EnumTemplate.cs | 54 +++++-- .../Templates/Enum/EnumTemplate.tt | 3 + .../Templates/Methods/MethodsTemplate.cs | 44 ++++-- .../Templates/Methods/MethodsTemplate.tt | 3 + .../Generated/Client/QueryMethods.cs | 10 ++ .../Generated/Enums/CustomerStatus.cs | 3 + .../Generated/Inputs/OrderInput.cs | 9 ++ .../Generated/Types/Order.cs | 19 +++ .../Models/CustomerStatus.cs | 4 +- .../Models/Order.cs | 10 ++ test/Linq2GraphQL.TestServerNullable/Query.cs | 5 + 17 files changed, 293 insertions(+), 83 deletions(-) diff --git a/src/Linq2GraphQL.Generator/General.cs b/src/Linq2GraphQL.Generator/General.cs index b477b6d9..0f944806 100644 --- a/src/Linq2GraphQL.Generator/General.cs +++ b/src/Linq2GraphQL.Generator/General.cs @@ -44,14 +44,18 @@ query Into { interfaces { name } - enumValues { + enumValues(includeDeprecated: true) { name description + isDeprecated + deprecationReason } - fields { + fields(includeDeprecated: true) { name description + isDeprecated + deprecationReason type { ...BaseType } @@ -64,9 +68,11 @@ query Into { } } } - inputFields { + inputFields(includeDeprecated: true) { name description + isDeprecated + deprecationReason type { ...BaseType } diff --git a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs index b86449d3..4cb6b38a 100644 --- a/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs +++ b/src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs @@ -1,9 +1,5 @@ -using Linq2GraphQL.Client.Common; -using System.Diagnostics; -using System.Runtime.Serialization; -using System.Security.AccessControl; +using System.Runtime.Serialization; using System.Text.Json.Serialization; -using System.Text.RegularExpressions; namespace Linq2GraphQL.Generator; @@ -111,7 +107,10 @@ public class EnumValue { public string Name { get; set; } public string Description { get; set; } - + + public bool IsDeprecated { get; set; } + public string DeprecationReason { get; set; } + public string GetCSharpName() { @@ -131,6 +130,9 @@ public class BaseField public string Name { get; set; } public string Description { get; set; } + public bool IsDeprecated { get; set; } + public string DeprecationReason { get; set; } + public bool HasDescription => !string.IsNullOrEmpty(Description); public string SummaryDescription => Helpers.SummarySafe(Description); diff --git a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs index aa6121e6..56924db0 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs @@ -76,79 +76,100 @@ public virtual string TransformText() #line default #line hidden - this.Write("\")]\r\n public static "); + this.Write("\")]\r\n"); #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + if (field.IsDeprecated) { + + #line default + #line hidden + this.Write(" [Obsolete(\""); + + #line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n"); + + #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + } + + #line default + #line hidden + this.Write(" public static "); + + #line 23 "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 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 23 "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("(this "); - #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name)); #line default #line hidden this.Write(" "); - #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name.ToCamelCase())); #line default #line hidden this.Write(", "); - #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.GetArgString(true))); #line default #line hidden this.Write(")\r\n {\r\n return "); - #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name.ToCamelCase())); #line default #line hidden this.Write(".GetMethodValue<"); - #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 25 "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 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 25 "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("\", "); - #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.GetArgNames())); #line default #line hidden this.Write(");\r\n }\r\n\r\n"); - #line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 28 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden this.Write("}\r\n\r\n"); - #line 28 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 31 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } @@ -156,21 +177,21 @@ public virtual string TransformText() #line default #line hidden - #line 31 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 34 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasDescription) { #line default #line hidden this.Write("/// \r\n/// "); - #line 33 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 36 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.SummaryDescription)); #line default #line hidden this.Write("\r\n/// \r\n"); - #line 35 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } @@ -179,151 +200,192 @@ public virtual string TransformText() #line hidden this.Write("public partial class "); - #line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 41 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name)); #line default #line hidden this.Write(" "); - #line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 41 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(classType.GetInterfacesString("GraphQLTypeBase"))); #line default #line hidden this.Write("\r\n{\r\n"); - #line 40 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 43 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" foreach (var field in classType.AllFields) { #line default #line hidden - #line 41 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 44 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (field.IsMethod) { #line default #line hidden this.Write(" private LazyProperty<"); - #line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 45 "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 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 45 "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(" = new();\r\n /// \r\n /// Do not use in Query, only to retrive result" + - "\r\n /// \r\n public "); + "\r\n /// \r\n"); + + #line 49 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + if (field.IsDeprecated) { - #line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line default + #line hidden + this.Write(" [Obsolete(\""); + + #line 50 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n"); + + #line 51 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + } + + #line default + #line hidden + this.Write(" public "); + + #line 52 "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 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 52 "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 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 52 "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 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 52 "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 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 52 "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 48 "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" } else { #line default #line hidden - #line 49 "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" if (field.HasDescription) { #line default #line hidden this.Write(" /// \r\n /// "); - #line 51 "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.SummaryDescription)); #line default #line hidden this.Write("\r\n /// \r\n"); - #line 53 "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 60 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + if (field.IsDeprecated) { + + #line default + #line hidden + this.Write(" [Obsolete(\""); + + #line 61 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n"); + + #line 62 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" } #line default #line hidden this.Write(" [GraphQLMember(\""); - #line 54 "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" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\")]\r\n [JsonPropertyName(\""); - #line 55 "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" 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 65 "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 65 "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 67 "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 68 "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 69 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" if (classType.HasInterfaces) { #line default @@ -331,7 +393,7 @@ public virtual string TransformText() this.Write(" [GraphQLMember(\"__typename\")]\r\n [JsonPropertyName(\"__typename\")]\r\n publ" + "ic string __TypeName { get; set; }\r\n"); - #line 64 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt" + #line 73 "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 85ee99ef..0257179b 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt @@ -17,6 +17,9 @@ public static class <#= classType.Name #>Extensions { <# foreach (var field in classType.AllFields.Where(e => e.IsMethod)) { #> [GraphQLMember("<#= field.Name #>")] +<# if (field.IsDeprecated) { #> + [Obsolete("<#= field.DeprecationReason #>")] +<# } #> 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,6 +46,9 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// /// Do not use in Query, only to retrive result /// +<# if (field.IsDeprecated) { #> + [Obsolete("<#= field.DeprecationReason #>")] +<# } #> public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> => _<#= field.Name #>.Value(() => GetFirstMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>")); <# } else { #> @@ -50,6 +56,9 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr /// /// <#= field.SummaryDescription #> /// +<# } #> +<# if (field.IsDeprecated) { #> + [Obsolete("<#= field.DeprecationReason #>")] <# } #> [GraphQLMember("<#= field.Name #>")] [JsonPropertyName("<#= field.Name #>")] diff --git a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs index e94bf2af..63af09ab 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs @@ -58,58 +58,78 @@ public virtual string TransformText() #line default #line hidden - this.Write("\t[GraphQLMember(\""); #line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + if (field.IsDeprecated) { + + #line default + #line hidden + this.Write(" [Obsolete(\""); + + #line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n"); + + #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + } + + #line default + #line hidden + this.Write("\t[GraphQLMember(\""); + + #line 21 "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\t[JsonPropertyName(\""); - #line 19 "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\tpublic "); - #line 20 "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(GetPropertyDefinition(field))); #line default #line hidden this.Write(" "); - #line 20 "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.CSharpName)); #line default #line hidden this.Write(" \r\n\t{\r\n\t\tget => GetValue<"); - #line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 25 "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 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 25 "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 23 "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" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\", value);\r\n\t}\r\n\r\n"); - #line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt" + #line 29 "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 68fdbc8a..c21a9aa3 100644 --- a/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt @@ -15,6 +15,9 @@ public partial class <#= classType.Name #> : GraphInputBase { var coreType = field.CoreType; #> +<# if (field.IsDeprecated) { #> + [Obsolete("<#= field.DeprecationReason #>")] +<# } #> [GraphQLMember("<#= field.Name #>")] [JsonPropertyName("<#= field.Name #>")] public <#= GetPropertyDefinition(field) #> <#= field.CSharpName #> diff --git a/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs index d9d6612d..4df6f934 100644 --- a/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs @@ -1,7 +1,7 @@ // ------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version: 16.0.0.0 +// Runtime Version: 17.0.0.0 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -15,8 +15,8 @@ namespace Linq2GraphQL.Generator.Templates.Enum /// Class to produce the template output /// - #line 1 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "16.0.0.0")] + #line 1 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")] public partial class EnumTemplate : EnumTemplateBase { #line hidden @@ -25,47 +25,68 @@ public partial class EnumTemplate : EnumTemplateBase /// public virtual string TransformText() { - this.Write("using Linq2GraphQL.Client;\r\nusing System.Runtime.Serialization;\r\nusing System.Text.Json.Serialization;\r\n\r\nnamespace "); + this.Write("using Linq2GraphQL.Client;\r\nusing System.Runtime.Serialization;\r\nusing System.Tex" + + "t.Json.Serialization;\r\n\r\nnamespace "); - #line 7 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 7 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespaceName)); #line default #line hidden this.Write(";\r\n\r\n[JsonConverter(typeof(JsonStringEnumMemberConverter))]\r\npublic enum "); - #line 10 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 10 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumType.Name)); #line default #line hidden this.Write("\r\n{\r\n"); - #line 12 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 12 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" foreach (var enumValue in enumType.EnumValues) { + #line default + #line hidden + + #line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + if (enumValue.IsDeprecated) { + + #line default + #line hidden + this.Write(" [Obsolete(\""); + + #line 17 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n"); + + #line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + } + #line default #line hidden this.Write(" [EnumMember(Value = \""); - #line 16 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.Name)); #line default #line hidden this.Write("\")]\r\n "); - #line 17 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.GetCSharpName())); #line default #line hidden this.Write(",\r\n"); - #line 18 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" } @@ -73,7 +94,7 @@ public virtual string TransformText() #line default #line hidden - #line 21 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 24 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" if (enumGeneratorStrategy == EnumGeneratorStrategy.AddUnknownOption) { @@ -81,9 +102,12 @@ public virtual string TransformText() #line default #line hidden - this.Write(" /// \r\n /// Unknown values are mapped to this member. \r\n /// Generated via --es/-enum-strategy command line option upon generation. \r\n /// Don't set explicitly. \r\n /// \r\n [EnumMember(Value = \"\")]\r\n __Unknown\r\n"); + this.Write(" /// \r\n /// Unknown values are mapped to this member. \r\n /// Ge" + + "nerated via --es/-enum-strategy command line option upon generation. \r\n /// D" + + "on\'t set explicitly. \r\n /// \r\n [EnumMember(Value = \"\")]\r\n __U" + + "nknown\r\n"); - #line 32 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" + #line 35 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt" } @@ -101,7 +125,7 @@ public virtual string TransformText() /// /// Base class for this transformation /// - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")] public class EnumTemplateBase { #region Fields @@ -116,7 +140,7 @@ public class EnumTemplateBase /// /// The string builder that generation-time code is using to assemble generated output /// - protected System.Text.StringBuilder GenerationEnvironment + public System.Text.StringBuilder GenerationEnvironment { get { diff --git a/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt index 520e1575..17705bba 100644 --- a/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt @@ -13,6 +13,9 @@ public enum <#= enumType.Name #> foreach (var enumValue in enumType.EnumValues) { #> +<# if (enumValue.IsDeprecated) { #> + [Obsolete("<#= enumValue.DeprecationReason #>")] +<# } #> [EnumMember(Value = "<#= enumValue.Name #>")] <#= enumValue.GetCSharpName() #>, <# diff --git a/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.cs b/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.cs index 97ce3e83..cb5bc769 100644 --- a/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.cs +++ b/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.cs @@ -76,30 +76,50 @@ public virtual string TransformText() #line default #line hidden - this.Write("public "); #line 31 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + if (field.IsDeprecated) { + + #line default + #line hidden + this.Write("[Obsolete(\""); + + #line 32 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason)); + + #line default + #line hidden + this.Write("\")]\r\n "); + + #line 33 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + } + + #line default + #line hidden + this.Write("public "); + + #line 34 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetReturnTypeString(field))); #line default #line hidden this.Write(" "); - #line 31 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 34 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName)); #line default #line hidden this.Write("("); - #line 31 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 34 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.GetArgString(false))); #line default #line hidden this.Write(")\r\n {\r\n\t var arguments = new List\r\n {\r\n "); - #line 35 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" foreach (var arg in field.Args) { @@ -109,28 +129,28 @@ public virtual string TransformText() #line hidden this.Write("\t new(\""); - #line 39 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(arg.Name)); #line default #line hidden this.Write("\",\""); - #line 39 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(arg.CoreType.GraphQLTypeDefinition)); #line default #line hidden this.Write("\", "); - #line 39 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(arg.Name.ToCamelCase())); #line default #line hidden this.Write("),\r\n "); - #line 40 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 43 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" } @@ -139,28 +159,28 @@ public virtual string TransformText() #line hidden this.Write(" };\r\n\r\n return "); - #line 45 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 48 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(GetReturnBuilderString(field))); #line default #line hidden this.Write("(client, \""); - #line 45 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 48 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("\", "); - #line 45 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 48 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" this.Write(this.ToStringHelper.ToStringWithCulture(operationType)); #line default #line hidden this.Write(", arguments); \r\n }\r\n\r\n "); - #line 48 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" + #line 51 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Methods\MethodsTemplate.tt" } diff --git a/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.tt b/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.tt index 97f5ad9c..c9f2fb0c 100644 --- a/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.tt +++ b/src/Linq2GraphQL.Generator/Templates/Methods/MethodsTemplate.tt @@ -28,6 +28,9 @@ public class <#= ClassName #> { var coreType = field.CoreType; #> +<# if (field.IsDeprecated) { #> +[Obsolete("<#= field.DeprecationReason #>")] + <# } #> public <#= GetReturnTypeString(field) #> <#= field.CSharpName #>(<#= field.GetArgString(false) #>) { var arguments = new List diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Client/QueryMethods.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Client/QueryMethods.cs index 284dee96..273d6fa3 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Client/QueryMethods.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Client/QueryMethods.cs @@ -29,6 +29,16 @@ public GraphQuery Item() return new GraphQuery(client, "item", OperationType.Query, arguments); } + [Obsolete("This is an really old method! please d not use it!!")] + public GraphQuery ItemDraft() + { + var arguments = new List + { + }; + + return new GraphQuery(client, "itemDraft", OperationType.Query, arguments); + } + public GraphQuery> CustomerList() { var arguments = new List diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Enums/CustomerStatus.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Enums/CustomerStatus.cs index 46d2b50e..078ec802 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Enums/CustomerStatus.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Enums/CustomerStatus.cs @@ -18,4 +18,7 @@ public enum CustomerStatus Active, [EnumMember(Value = "DISABLED")] Disabled, + [Obsolete("No longer in use, please use enum value Active instead")] + [EnumMember(Value = "IN_TRANSIT")] + InTransit, } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs index d1a8efa0..7138e3cf 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Inputs/OrderInput.cs @@ -63,4 +63,13 @@ public TimeSpan? EntryTime set => SetValue("entryTime", value); } + [Obsolete("This propery is obsolete and should not be used!")] + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public string? Grade + { + get => GetValue("grade"); + set => SetValue("grade", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs index a72eeb52..326b2611 100644 --- a/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClientNullable/Generated/Types/Order.cs @@ -17,6 +17,13 @@ namespace Linq2GraphQL.TestClientNullable; public static class OrderExtensions { + [GraphQLMember("myGradeMethod")] + [Obsolete("This method should not be used anymore")] + public static string? MyGradeMethod(this Order order, [GraphQLArgument("name", "String!")] string name) + { + return order.GetMethodValue("myGradeMethod", name); + } + [GraphQLMember("orderHello")] public static string OrderHello(this Order order, [GraphQLArgument("name", "String!")] string name, [GraphQLArgument("first", "Int!")] int first) { @@ -33,6 +40,13 @@ public static Address OrderAddress(this Order order, [GraphQLArgument("addressT public partial class Order : GraphQLTypeBase { + private LazyProperty _myGradeMethod = new(); + /// + /// Do not use in Query, only to retrive result + /// + [Obsolete("This method should not be used anymore")] + public string? MyGradeMethod => _myGradeMethod.Value(() => GetFirstMethodValue("myGradeMethod")); + private LazyProperty _orderHello = new(); /// /// Do not use in Query, only to retrive result @@ -69,4 +83,9 @@ public partial class Order : GraphQLTypeBase [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { get; set; } + [Obsolete("This propery is obsolete and should not be used!")] + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public string? Grade { get; set; } + } diff --git a/test/Linq2GraphQL.TestServer.Shared/Models/CustomerStatus.cs b/test/Linq2GraphQL.TestServer.Shared/Models/CustomerStatus.cs index a6db3d15..9f39b53d 100644 --- a/test/Linq2GraphQL.TestServer.Shared/Models/CustomerStatus.cs +++ b/test/Linq2GraphQL.TestServer.Shared/Models/CustomerStatus.cs @@ -3,5 +3,7 @@ public enum CustomerStatus { Active = 0, - Disabled = 1 + Disabled = 1, + [Obsolete("No longer in use, please use enum value Active instead")] + InTransit = 99 } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestServer.Shared/Models/Order.cs b/test/Linq2GraphQL.TestServer.Shared/Models/Order.cs index 6375c03b..0e63ccab 100644 --- a/test/Linq2GraphQL.TestServer.Shared/Models/Order.cs +++ b/test/Linq2GraphQL.TestServer.Shared/Models/Order.cs @@ -15,6 +15,16 @@ public Order(Customer customer) public List Lines { get; set; } = new(); public TimeOnly? EntryTime { get; set; } + [Obsolete("This propery is obsolete and should not be used!")] + public string? Grade { get; set; } + + + [Obsolete("This method should not be used anymore")] + public string? GetMyGradeMethod(string name) + { + return Grade; + } + public string GetOrderHello(string name, int first = 0) { return $"Hello, {name} [{first}]"; diff --git a/test/Linq2GraphQL.TestServerNullable/Query.cs b/test/Linq2GraphQL.TestServerNullable/Query.cs index b2254701..aa91274a 100644 --- a/test/Linq2GraphQL.TestServerNullable/Query.cs +++ b/test/Linq2GraphQL.TestServerNullable/Query.cs @@ -12,6 +12,11 @@ public Item GetItem() return SampleData.GetItem("Test Item"); } + [Obsolete("This is an really old method! please d not use it!!")] + public Item GetItemDraft() + { + return SampleData.GetItem("Test Item"); + } public List GetCustomerList() { From 7f84e477cc583fe03fb59f1a0cddae63a9808f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Dang=C3=A5rden?= Date: Thu, 27 Mar 2025 21:52:27 +0100 Subject: [PATCH 2/2] Re generated test client --- .../Properties/launchSettings.json | 2 +- .../Generated/Enums/CustomerStatus.cs | 3 +++ .../Generated/Inputs/InputFactory.cs | 23 +++++++++++++++++++ .../Generated/Inputs/OrderFilterInput.cs | 8 +++++++ .../Generated/Inputs/OrderInput.cs | 9 ++++++++ .../Generated/Inputs/OrderSortInput.cs | 8 +++++++ .../Generated/Types/Order.cs | 19 +++++++++++++++ 7 files changed, 71 insertions(+), 1 deletion(-) diff --git a/src/Linq2GraphQL.Generator/Properties/launchSettings.json b/src/Linq2GraphQL.Generator/Properties/launchSettings.json index 7adb1150..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:50741/graphql/ -c=\"SampleNullableClient\" -n=\"Linq2GraphQL.TestClientNullable\" -o=\"C:\\Code\\Github\\Linq2GraphQL.Client\\test\\Linq2GraphQL.TestClientNullable\\Generated\" -s=true -nu=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/test/Linq2GraphQL.TestClient/Generated/Enums/CustomerStatus.cs b/test/Linq2GraphQL.TestClient/Generated/Enums/CustomerStatus.cs index 82009d9a..f03d38df 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Enums/CustomerStatus.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Enums/CustomerStatus.cs @@ -18,4 +18,7 @@ public enum CustomerStatus Active, [EnumMember(Value = "DISABLED")] Disabled, + [Obsolete("No longer in use, please use enum value Active instead")] + [EnumMember(Value = "IN_TRANSIT")] + InTransit, } \ 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 63f08d54..c3f58e05 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs @@ -1161,6 +1161,15 @@ public static OrderFilterInput EntryTime(this OrderFilterInput input, Action mod) + { + var filter = new StringOperationFilterInput(); + mod ??= _ => { }; + mod(filter); + input.Grade = filter; + return input; + } + } public static class OrderInputExtensions @@ -1213,6 +1222,13 @@ public static OrderInput EntryTime(this OrderInput input, TimeSpan? val) return input; } + + public static OrderInput Grade(this OrderInput input, string val) + { + input.Grade = val; + return input; + } + } public static class OrderLineFilterInputExtensions @@ -1366,6 +1382,13 @@ public static OrderSortInput EntryTime(this OrderSortInput input, SortEnumType? return input; } + + public static OrderSortInput Grade(this OrderSortInput input, SortEnumType? val) + { + input.Grade = val; + return input; + } + } public static class StringOperationFilterInputExtensions diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs index 7d44d781..4bb175cf 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs @@ -79,4 +79,12 @@ public TimeSpanOperationFilterInput EntryTime set => SetValue("entryTime", value); } + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public StringOperationFilterInput Grade + { + get => GetValue("grade"); + set => SetValue("grade", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs index faadd772..273abd65 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs @@ -63,4 +63,13 @@ public TimeSpan? EntryTime set => SetValue("entryTime", value); } + [Obsolete("This propery is obsolete and should not be used!")] + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public string Grade + { + get => GetValue("grade"); + set => SetValue("grade", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs index de25b144..4ec4ede3 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs @@ -55,4 +55,12 @@ public SortEnumType? EntryTime set => SetValue("entryTime", value); } + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public SortEnumType? Grade + { + get => GetValue("grade"); + set => SetValue("grade", value); + } + } \ No newline at end of file diff --git a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs index 98c79c12..7281f376 100644 --- a/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs +++ b/test/Linq2GraphQL.TestClient/Generated/Types/Order.cs @@ -16,6 +16,13 @@ namespace Linq2GraphQL.TestClient; public static class OrderExtensions { + [GraphQLMember("myGradeMethod")] + [Obsolete("This method should not be used anymore")] + public static string MyGradeMethod(this Order order, [GraphQLArgument("name", "String!")] string name) + { + return order.GetMethodValue("myGradeMethod", name); + } + [GraphQLMember("orderHello")] public static string OrderHello(this Order order, [GraphQLArgument("name", "String!")] string name, [GraphQLArgument("first", "Int!")] int first) { @@ -32,6 +39,13 @@ public static Address OrderAddress(this Order order, [GraphQLArgument("addressT public partial class Order : GraphQLTypeBase { + private LazyProperty _myGradeMethod = new(); + /// + /// Do not use in Query, only to retrive result + /// + [Obsolete("This method should not be used anymore")] + public string MyGradeMethod => _myGradeMethod.Value(() => GetFirstMethodValue("myGradeMethod")); + private LazyProperty _orderHello = new(); /// /// Do not use in Query, only to retrive result @@ -68,4 +82,9 @@ public partial class Order : GraphQLTypeBase [JsonPropertyName("entryTime")] public TimeSpan? EntryTime { get; set; } + [Obsolete("This propery is obsolete and should not be used!")] + [GraphQLMember("grade")] + [JsonPropertyName("grade")] + public string Grade { get; set; } + }