Skip to content

Commit 9e0a55b

Browse files
committed
added initial support for obsolete attributes
1 parent c6e2752 commit 9e0a55b

File tree

17 files changed

+293
-83
lines changed

17 files changed

+293
-83
lines changed

src/Linq2GraphQL.Generator/General.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,18 @@ query Into {
4444
interfaces {
4545
name
4646
}
47-
enumValues {
47+
enumValues(includeDeprecated: true) {
4848
name
4949
description
50+
isDeprecated
51+
deprecationReason
5052
}
5153
52-
fields {
54+
fields(includeDeprecated: true) {
5355
name
5456
description
57+
isDeprecated
58+
deprecationReason
5559
type {
5660
...BaseType
5761
}
@@ -64,9 +68,11 @@ query Into {
6468
}
6569
}
6670
}
67-
inputFields {
71+
inputFields(includeDeprecated: true) {
6872
name
6973
description
74+
isDeprecated
75+
deprecationReason
7076
type {
7177
...BaseType
7278
}

src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
using Linq2GraphQL.Client.Common;
2-
using System.Diagnostics;
3-
using System.Runtime.Serialization;
4-
using System.Security.AccessControl;
1+
using System.Runtime.Serialization;
52
using System.Text.Json.Serialization;
6-
using System.Text.RegularExpressions;
73

84
namespace Linq2GraphQL.Generator;
95

@@ -111,7 +107,10 @@ public class EnumValue
111107
{
112108
public string Name { get; set; }
113109
public string Description { get; set; }
114-
110+
111+
public bool IsDeprecated { get; set; }
112+
public string DeprecationReason { get; set; }
113+
115114

116115
public string GetCSharpName()
117116
{
@@ -131,6 +130,9 @@ public class BaseField
131130
public string Name { get; set; }
132131
public string Description { get; set; }
133132

133+
public bool IsDeprecated { get; set; }
134+
public string DeprecationReason { get; set; }
135+
134136
public bool HasDescription => !string.IsNullOrEmpty(Description);
135137

136138
public string SummaryDescription => Helpers.SummarySafe(Description);

src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs

Lines changed: 100 additions & 38 deletions
Large diffs are not rendered by default.

src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public static class <#= classType.Name #>Extensions
1717
{
1818
<# foreach (var field in classType.AllFields.Where(e => e.IsMethod)) { #>
1919
[GraphQLMember("<#= field.Name #>")]
20+
<# if (field.IsDeprecated) { #>
21+
[Obsolete("<#= field.DeprecationReason #>")]
22+
<# } #>
2023
public static <#= GetFieldCSharpName(field) #> <#= field.CSharpName #>(this <#= classType.Name #> <#= classType.Name.ToCamelCase() #>, <#= field.GetArgString(true) #>)
2124
{
2225
return <#= classType.Name.ToCamelCase() #>.GetMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>", <#= field.GetArgNames() #>);
@@ -43,13 +46,19 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr
4346
/// <summary>
4447
/// Do not use in Query, only to retrive result
4548
/// </summary>
49+
<# if (field.IsDeprecated) { #>
50+
[Obsolete("<#= field.DeprecationReason #>")]
51+
<# } #>
4652
public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> => _<#= field.Name #>.Value(() => GetFirstMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>"));
4753

4854
<# } else { #>
4955
<# if (field.HasDescription) { #>
5056
/// <summary>
5157
/// <#= field.SummaryDescription #>
5258
/// </summary>
59+
<# } #>
60+
<# if (field.IsDeprecated) { #>
61+
[Obsolete("<#= field.DeprecationReason #>")]
5362
<# } #>
5463
[GraphQLMember("<#= field.Name #>")]
5564
[JsonPropertyName("<#= field.Name #>")]

src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,58 +58,78 @@ public virtual string TransformText()
5858

5959
#line default
6060
#line hidden
61-
this.Write("\t[GraphQLMember(\"");
6261

6362
#line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
63+
if (field.IsDeprecated) {
64+
65+
#line default
66+
#line hidden
67+
this.Write(" [Obsolete(\"");
68+
69+
#line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
70+
this.Write(this.ToStringHelper.ToStringWithCulture(field.DeprecationReason));
71+
72+
#line default
73+
#line hidden
74+
this.Write("\")]\r\n");
75+
76+
#line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
77+
}
78+
79+
#line default
80+
#line hidden
81+
this.Write("\t[GraphQLMember(\"");
82+
83+
#line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
6484
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
6585

6686
#line default
6787
#line hidden
6888
this.Write("\")]\r\n\t[JsonPropertyName(\"");
6989

70-
#line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
90+
#line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
7191
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
7292

7393
#line default
7494
#line hidden
7595
this.Write("\")]\r\n\tpublic ");
7696

77-
#line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
97+
#line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
7898
this.Write(this.ToStringHelper.ToStringWithCulture(GetPropertyDefinition(field)));
7999

80100
#line default
81101
#line hidden
82102
this.Write(" ");
83103

84-
#line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
104+
#line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
85105
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
86106

87107
#line default
88108
#line hidden
89109
this.Write(" \r\n\t{\r\n\t\tget => GetValue<");
90110

91-
#line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
111+
#line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
92112
this.Write(this.ToStringHelper.ToStringWithCulture(coreType.CSharpTypeDefinition));
93113

94114
#line default
95115
#line hidden
96116
this.Write(">(\"");
97117

98-
#line 22 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
118+
#line 25 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
99119
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
100120

101121
#line default
102122
#line hidden
103123
this.Write("\");\r\n \tset => SetValue(\"");
104124

105-
#line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
125+
#line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
106126
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
107127

108128
#line default
109129
#line hidden
110130
this.Write("\", value);\r\n\t}\r\n\r\n");
111131

112-
#line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
132+
#line 29 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\InputClassTemplate.tt"
113133

114134
}
115135

src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.tt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public partial class <#= classType.Name #> : GraphInputBase
1515
{
1616
var coreType = field.CoreType;
1717
#>
18+
<# if (field.IsDeprecated) { #>
19+
[Obsolete("<#= field.DeprecationReason #>")]
20+
<# } #>
1821
[GraphQLMember("<#= field.Name #>")]
1922
[JsonPropertyName("<#= field.Name #>")]
2023
public <#= GetPropertyDefinition(field) #> <#= field.CSharpName #>

src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// ------------------------------------------------------------------------------
22
// <auto-generated>
33
// This code was generated by a tool.
4-
// Runtime Version: 16.0.0.0
4+
// Runtime Version: 17.0.0.0
55
//
66
// Changes to this file may cause incorrect behavior and will be lost if
77
// the code is regenerated.
@@ -15,8 +15,8 @@ namespace Linq2GraphQL.Generator.Templates.Enum
1515
/// Class to produce the template output
1616
/// </summary>
1717

18-
#line 1 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
19-
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "16.0.0.0")]
18+
#line 1 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
19+
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
2020
public partial class EnumTemplate : EnumTemplateBase
2121
{
2222
#line hidden
@@ -25,65 +25,89 @@ public partial class EnumTemplate : EnumTemplateBase
2525
/// </summary>
2626
public virtual string TransformText()
2727
{
28-
this.Write("using Linq2GraphQL.Client;\r\nusing System.Runtime.Serialization;\r\nusing System.Text.Json.Serialization;\r\n\r\nnamespace ");
28+
this.Write("using Linq2GraphQL.Client;\r\nusing System.Runtime.Serialization;\r\nusing System.Tex" +
29+
"t.Json.Serialization;\r\n\r\nnamespace ");
2930

30-
#line 7 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
31+
#line 7 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
3132
this.Write(this.ToStringHelper.ToStringWithCulture(namespaceName));
3233

3334
#line default
3435
#line hidden
3536
this.Write(";\r\n\r\n[JsonConverter(typeof(JsonStringEnumMemberConverter))]\r\npublic enum ");
3637

37-
#line 10 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
38+
#line 10 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
3839
this.Write(this.ToStringHelper.ToStringWithCulture(enumType.Name));
3940

4041
#line default
4142
#line hidden
4243
this.Write("\r\n{\r\n");
4344

44-
#line 12 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
45+
#line 12 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
4546

4647
foreach (var enumValue in enumType.EnumValues)
4748
{
4849

4950

51+
#line default
52+
#line hidden
53+
54+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
55+
if (enumValue.IsDeprecated) {
56+
57+
#line default
58+
#line hidden
59+
this.Write(" [Obsolete(\"");
60+
61+
#line 17 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
62+
this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.DeprecationReason));
63+
64+
#line default
65+
#line hidden
66+
this.Write("\")]\r\n");
67+
68+
#line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
69+
}
70+
5071
#line default
5172
#line hidden
5273
this.Write(" [EnumMember(Value = \"");
5374

54-
#line 16 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
75+
#line 19 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
5576
this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.Name));
5677

5778
#line default
5879
#line hidden
5980
this.Write("\")]\r\n ");
6081

61-
#line 17 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
82+
#line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
6283
this.Write(this.ToStringHelper.ToStringWithCulture(enumValue.GetCSharpName()));
6384

6485
#line default
6586
#line hidden
6687
this.Write(",\r\n");
6788

68-
#line 18 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
89+
#line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
6990

7091
}
7192

7293

7394
#line default
7495
#line hidden
7596

76-
#line 21 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
97+
#line 24 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
7798

7899
if (enumGeneratorStrategy == EnumGeneratorStrategy.AddUnknownOption)
79100
{
80101

81102

82103
#line default
83104
#line hidden
84-
this.Write(" /// <summary>\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 /// </summary>\r\n [EnumMember(Value = \"\")]\r\n __Unknown\r\n");
105+
this.Write(" /// <summary>\r\n /// Unknown values are mapped to this member. \r\n /// Ge" +
106+
"nerated via --es/-enum-strategy command line option upon generation. \r\n /// D" +
107+
"on\'t set explicitly. \r\n /// </summary>\r\n [EnumMember(Value = \"\")]\r\n __U" +
108+
"nknown\r\n");
85109

86-
#line 32 "C:\Code\Linq2GraphQL\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
110+
#line 35 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Enum\EnumTemplate.tt"
87111

88112
}
89113

@@ -101,7 +125,7 @@ public virtual string TransformText()
101125
/// <summary>
102126
/// Base class for this transformation
103127
/// </summary>
104-
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "16.0.0.0")]
128+
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
105129
public class EnumTemplateBase
106130
{
107131
#region Fields
@@ -116,7 +140,7 @@ public class EnumTemplateBase
116140
/// <summary>
117141
/// The string builder that generation-time code is using to assemble generated output
118142
/// </summary>
119-
protected System.Text.StringBuilder GenerationEnvironment
143+
public System.Text.StringBuilder GenerationEnvironment
120144
{
121145
get
122146
{

src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ public enum <#= enumType.Name #>
1313
foreach (var enumValue in enumType.EnumValues)
1414
{
1515
#>
16+
<# if (enumValue.IsDeprecated) { #>
17+
[Obsolete("<#= enumValue.DeprecationReason #>")]
18+
<# } #>
1619
[EnumMember(Value = "<#= enumValue.Name #>")]
1720
<#= enumValue.GetCSharpName() #>,
1821
<#

0 commit comments

Comments
 (0)