Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/Linq2GraphQL.Generator/General.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -64,9 +68,11 @@ query Into {
}
}
}
inputFields {
inputFields(includeDeprecated: true) {
name
description
isDeprecated
deprecationReason
type {
...BaseType
}
Expand Down
14 changes: 8 additions & 6 deletions src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -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()
{
Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/Linq2GraphQL.Generator/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
}
138 changes: 100 additions & 38 deletions src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.cs

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions src/Linq2GraphQL.Generator/Templates/Class/ClassTemplate.tt
Original file line number Diff line number Diff line change
Expand Up @@ -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() #>);
Expand All @@ -43,13 +46,19 @@ public partial class <#= classType.Name #> <#= classType.GetInterfacesString("Gr
/// <summary>
/// Do not use in Query, only to retrive result
/// </summary>
<# if (field.IsDeprecated) { #>
[Obsolete("<#= field.DeprecationReason #>")]
<# } #>
public <#= GetFieldCSharpName(field) #> <#= field.CSharpName #> => _<#= field.Name #>.Value(() => GetFirstMethodValue<<#= GetFieldCSharpName(field) #>>("<#= field.Name #>"));

<# } else { #>
<# if (field.HasDescription) { #>
/// <summary>
/// <#= field.SummaryDescription #>
/// </summary>
<# } #>
<# if (field.IsDeprecated) { #>
[Obsolete("<#= field.DeprecationReason #>")]
<# } #>
[GraphQLMember("<#= field.Name #>")]
[JsonPropertyName("<#= field.Name #>")]
Expand Down
36 changes: 28 additions & 8 deletions src/Linq2GraphQL.Generator/Templates/Class/InputClassTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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"

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 #>
Expand Down
54 changes: 39 additions & 15 deletions src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// ------------------------------------------------------------------------------
// <auto-generated>
// 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.
Expand All @@ -15,8 +15,8 @@ namespace Linq2GraphQL.Generator.Templates.Enum
/// Class to produce the template output
/// </summary>

#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
Expand All @@ -25,65 +25,89 @@ public partial class EnumTemplate : EnumTemplateBase
/// </summary>
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"

}


#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)
{


#line default
#line hidden
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");
this.Write(" /// <summary>\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 /// </summary>\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"

}

Expand All @@ -101,7 +125,7 @@ public virtual string TransformText()
/// <summary>
/// Base class for this transformation
/// </summary>
[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
Expand All @@ -116,7 +140,7 @@ public class EnumTemplateBase
/// <summary>
/// The string builder that generation-time code is using to assemble generated output
/// </summary>
protected System.Text.StringBuilder GenerationEnvironment
public System.Text.StringBuilder GenerationEnvironment
{
get
{
Expand Down
3 changes: 3 additions & 0 deletions src/Linq2GraphQL.Generator/Templates/Enum/EnumTemplate.tt
Original file line number Diff line number Diff line change
Expand Up @@ -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() #>,
<#
Expand Down
Loading