Skip to content

Commit 75a329d

Browse files
committed
Generator updated
1 parent 72f4a82 commit 75a329d

21 files changed

Lines changed: 350 additions & 121 deletions

src/Linq2GraphQL.Generator/GraphQLSchema/RootSchema.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,21 @@ public class GraphqlType : BaseType
3434

3535
public bool HasInterfaces => (Interfaces != null && Interfaces.Any());
3636

37-
public string GetInterfacesString()
37+
public string GetInterfacesString(string baseClass = null)
3838
{
3939
var interfaces = "";
4040

41+
if (!string.IsNullOrWhiteSpace(baseClass))
42+
{
43+
interfaces += baseClass;
44+
}
45+
4146
if (HasInterfaces)
4247
{
48+
if (!string.IsNullOrWhiteSpace(interfaces))
49+
{
50+
interfaces += ", ";
51+
}
4352
interfaces = string.Join(", ", Interfaces.Select(e => e.Name));
4453
}
4554

@@ -50,12 +59,14 @@ public string GetInterfacesString()
5059
interfaces += ", ";
5160
}
5261

53-
interfaces = "Linq2GraphQL.Client.Common.ICursorPaging";
62+
interfaces += "Linq2GraphQL.Client.Common.ICursorPaging";
5463
}
5564

65+
66+
5667
if (!string.IsNullOrWhiteSpace(interfaces))
5768
{
58-
interfaces = ": " + interfaces;
69+
interfaces = ": " + interfaces;
5970
}
6071

6172
return interfaces;
@@ -78,7 +89,7 @@ public bool ContainPageInfo()
7889
return Fields?.Any(e => e.GraphqlType.IsPageInfo()) == true;
7990
}
8091

81-
92+
8293
}
8394

8495
[JsonConverter(typeof(JsonStringEnumMemberConverter))]
@@ -196,6 +207,12 @@ public bool SupportCursorPaging()
196207
return true;
197208
}
198209

210+
public string GetArgNames()
211+
{
212+
if (Args == null) return null;
213+
return string.Join(", ", Args.Select(e => e.Name));
214+
}
215+
199216
public string GetArgString(bool addTypeAttribute)
200217
{
201218
var result = "";

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

Lines changed: 114 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,100 +26,108 @@ public partial class ClassTemplate : ClassTemplateBase
2626
public virtual string TransformText()
2727
{
2828
this.Write("using System;\r\nusing System.Collections.Generic;\r\nusing System.Text.Json.Serializ" +
29-
"ation;\r\nusing Linq2GraphQL.Client;\r\n\r\nnamespace ");
29+
"ation;\r\nusing Linq2GraphQL.Client;\r\nusing Linq2GraphQL.Client.Common;\r\n\r\nnamespa" +
30+
"ce ");
3031

31-
#line 8 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
32+
#line 9 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
3233
this.Write(this.ToStringHelper.ToStringWithCulture(namespaceName));
3334

3435
#line default
3536
#line hidden
3637
this.Write(";\r\n\r\n");
3738

38-
#line 10 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
39+
#line 11 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
3940
if (classType.AllFields.Any(e => e.IsMethod)) {
4041

4142
#line default
4243
#line hidden
4344
this.Write("public static class ");
4445

45-
#line 11 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
46+
#line 12 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
4647
this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name));
4748

4849
#line default
4950
#line hidden
5051
this.Write("Extensions\r\n{\r\n");
5152

52-
#line 13 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
53+
#line 14 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
5354
foreach (var field in classType.AllFields.Where(e => e.IsMethod)) {
5455

5556
#line default
5657
#line hidden
5758
this.Write(" [GraphMethod(\"");
5859

59-
#line 14 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
60+
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
6061
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
6162

6263
#line default
6364
#line hidden
6465
this.Write("\")]\r\n public static ");
6566

66-
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
67+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
6768
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
6869

6970
#line default
7071
#line hidden
7172
this.Write(" ");
7273

73-
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
74+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
7475
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
7576

7677
#line default
7778
#line hidden
7879
this.Write("(this ");
7980

80-
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
81+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
8182
this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name));
8283

8384
#line default
8485
#line hidden
8586
this.Write(" ");
8687

87-
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
88+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
8889
this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name.ToCamelCase()));
8990

9091
#line default
9192
#line hidden
9293
this.Write(", ");
9394

94-
#line 15 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
95+
#line 16 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
9596
this.Write(this.ToStringHelper.ToStringWithCulture(field.GetArgString(true)));
9697

9798
#line default
9899
#line hidden
99-
this.Write(")\r\n {\r\n\t return ");
100+
this.Write(")\r\n {\r\n\t return order.GetMethodValue<");
100101

101-
#line 17 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
102-
this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name.ToCamelCase()));
102+
#line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
103+
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
103104

104105
#line default
105106
#line hidden
106-
this.Write("?.");
107+
this.Write(">(\"");
107108

108-
#line 17 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
109-
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
109+
#line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
110+
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
111+
112+
#line default
113+
#line hidden
114+
this.Write("\", ");
115+
116+
#line 18 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
117+
this.Write(this.ToStringHelper.ToStringWithCulture(field.GetArgNames()));
110118

111119
#line default
112120
#line hidden
113-
this.Write(";\r\n }\r\n\r\n");
121+
this.Write(");\r\n }\r\n\r\n");
114122

115-
#line 20 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
123+
#line 21 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
116124
}
117125

118126
#line default
119127
#line hidden
120128
this.Write("}\r\n\r\n");
121129

122-
#line 23 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
130+
#line 24 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
123131

124132
}
125133

@@ -128,70 +136,140 @@ public virtual string TransformText()
128136
#line hidden
129137
this.Write("public partial class ");
130138

131-
#line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
139+
#line 27 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
132140
this.Write(this.ToStringHelper.ToStringWithCulture(classType.Name));
133141

134142
#line default
135143
#line hidden
136144
this.Write(" ");
137145

138-
#line 26 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
139-
this.Write(this.ToStringHelper.ToStringWithCulture(classType.GetInterfacesString()));
146+
#line 27 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
147+
this.Write(this.ToStringHelper.ToStringWithCulture(classType.GetInterfacesString("GraphQLTypeBase")));
140148

141149
#line default
142150
#line hidden
143151
this.Write("\r\n{\r\n");
144152

145-
#line 28 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
153+
#line 29 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
146154
foreach (var field in classType.AllFields) {
147155

148156
#line default
149157
#line hidden
150158

151-
#line 29 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
159+
#line 30 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
152160
if (field.IsMethod) {
153161

154162
#line default
155163
#line hidden
156-
this.Write(" /// <summary>\r\n /// Do not use in Query, only to retrive result\r\n /// <" +
157-
"/summary>\r\n [GraphShadowProperty]\r\n");
164+
this.Write("\r\n private LazyProperty<");
158165

159-
#line 34 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
160-
}
166+
#line 32 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
167+
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
168+
169+
#line default
170+
#line hidden
171+
this.Write("> _");
172+
173+
#line 32 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
174+
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
175+
176+
#line default
177+
#line hidden
178+
this.Write(" = new();\r\n /// <summary>\r\n /// Do not use in Query, only to retrive result" +
179+
"\r\n /// </summary>\r\n [GraphShadowProperty]\r\n public ");
180+
181+
#line 37 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
182+
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
183+
184+
#line default
185+
#line hidden
186+
this.Write(" ");
187+
188+
#line 37 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
189+
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
161190

162191
#line default
163192
#line hidden
164-
this.Write("\t[JsonPropertyName(\"");
193+
this.Write(" => _");
165194

166-
#line 35 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
195+
#line 37 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
196+
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
197+
198+
#line default
199+
#line hidden
200+
this.Write(".Value(() => GetFirstMethodValue<");
201+
202+
#line 37 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
203+
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
204+
205+
#line default
206+
#line hidden
207+
this.Write(">(\"");
208+
209+
#line 37 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
210+
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
211+
212+
#line default
213+
#line hidden
214+
this.Write("\"));\r\n // public ");
215+
216+
#line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
217+
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
218+
219+
#line default
220+
#line hidden
221+
this.Write(" ");
222+
223+
#line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
224+
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
225+
226+
#line default
227+
#line hidden
228+
this.Write(" { get; set; } \r\n\r\n");
229+
230+
#line 40 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
231+
} else {
232+
233+
#line default
234+
#line hidden
235+
this.Write(" [JsonPropertyName(\"");
236+
237+
#line 41 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
167238
this.Write(this.ToStringHelper.ToStringWithCulture(field.Name));
168239

169240
#line default
170241
#line hidden
171242
this.Write("\")]\r\n\tpublic ");
172243

173-
#line 36 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
244+
#line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
174245
this.Write(this.ToStringHelper.ToStringWithCulture(GetFieldCSharpName(field)));
175246

176247
#line default
177248
#line hidden
178249
this.Write(" ");
179250

180-
#line 36 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
251+
#line 42 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
181252
this.Write(this.ToStringHelper.ToStringWithCulture(field.CSharpName));
182253

183254
#line default
184255
#line hidden
185256
this.Write(" { get; set; } \r\n\r\n");
186257

187-
#line 38 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
258+
#line 44 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
188259
}
189260

190261
#line default
191262
#line hidden
192263
this.Write("\r\n");
193264

194-
#line 40 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
265+
#line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
266+
}
267+
268+
#line default
269+
#line hidden
270+
this.Write("\r\n\r\n\r\n\r\n");
271+
272+
#line 51 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
195273

196274
if (classType.HasInterfaces)
197275
{
@@ -202,7 +280,7 @@ public virtual string TransformText()
202280
this.Write(" [JsonPropertyName(\"__typename\")]\r\n public string __TypeName { get; set; }\r" +
203281
"\n ");
204282

205-
#line 46 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
283+
#line 57 "C:\Code\Github\Linq2GraphQL.Client\src\Linq2GraphQL.Generator\Templates\Class\ClassTemplate.tt"
206284

207285
}
208286

0 commit comments

Comments
 (0)