@@ -14,13 +14,16 @@ public class ClientGenerator
1414 private readonly string namespaceName ;
1515 private readonly string clientName ;
1616 private readonly bool includeSubscriptions ;
17+ private readonly EnumGeneratorStrategy enumGeneratorStrategy ;
1718 private readonly List < FileEntry > entries = new ( ) ;
1819
19- public ClientGenerator ( string namespaceName , string clientName , bool includeSubscriptions )
20+ public ClientGenerator ( string namespaceName , string clientName , bool includeSubscriptions ,
21+ EnumGeneratorStrategy enumGeneratorStrategy )
2022 {
2123 this . namespaceName = namespaceName ;
2224 this . clientName = clientName ;
2325 this . includeSubscriptions = includeSubscriptions ;
26+ this . enumGeneratorStrategy = enumGeneratorStrategy ;
2427 }
2528
2629 private void AddFile ( string directory , string fileName , string content )
@@ -56,7 +59,7 @@ public List<FileEntry> Generate(string schemaJson)
5659 {
5760 entries . Clear ( ) ;
5861 var rootSchema = JsonSerializer . Deserialize < RootSchema > ( schemaJson ,
59- new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy . CamelCase } ) ;
62+ new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy . CamelCase } ) ;
6063
6164 var schema = rootSchema . Data . Schema ;
6265 var queryType = schema . QueryType ;
@@ -88,17 +91,21 @@ public List<FileEntry> Generate(string schemaJson)
8891
8992 Console . WriteLine ( "Generate Interfaces" ) ;
9093
91- var classInterfacesList = schema . GetClassTypes ( ) . Where ( e => e . HasInterfaces ) . SelectMany ( i => i . Interfaces . ToDictionary ( e => i . Name , e => e . Name ) ) . ToList ( ) ;
94+ var classInterfacesList = schema . GetClassTypes ( ) . Where ( e => e . HasInterfaces )
95+ . SelectMany ( i => i . Interfaces . ToDictionary ( e => i . Name , e => e . Name ) ) . ToList ( ) ;
9296 foreach ( var interfaceType in schema . GetInterfaces ( ) )
9397 {
94- var implementedBy = classInterfacesList . Where ( e => e . Value == interfaceType . Name ) . Select ( e=> e . Key ) . ToList ( ) ;
98+ var implementedBy = classInterfacesList . Where ( e => e . Value == interfaceType . Name ) . Select ( e => e . Key )
99+ . ToList ( ) ;
95100
96- var interfaceTemplte = new InterfaceTemplate ( interfaceType , namespaceName , implementedBy ) . TransformText ( ) ;
101+ var interfaceTemplte =
102+ new InterfaceTemplate ( interfaceType , namespaceName , implementedBy ) . TransformText ( ) ;
97103 AddFile ( "Interfaces" , interfaceType . FileName , interfaceTemplte ) ;
98104 }
99105
100106 Console . WriteLine ( "Generate Types..." ) ;
101- foreach ( var classType in schema . GetClassTypes ( ) . Where ( e => e . Kind != TypeKind . InputObject && ! e . IsPageInfo ( ) ) )
107+ foreach ( var classType in schema . GetClassTypes ( )
108+ . Where ( e => e . Kind != TypeKind . InputObject && ! e . IsPageInfo ( ) ) )
102109 {
103110 var classText = new ClassTemplate ( classType , namespaceName ) . TransformText ( ) ;
104111 AddFile ( "Types" , classType . FileName , classText ) ;
@@ -119,7 +126,7 @@ public List<FileEntry> Generate(string schemaJson)
119126 Console . WriteLine ( "Generate Enums..." ) ;
120127 foreach ( var enumType in schema . GetEnums ( ) )
121128 {
122- var enumText = new EnumTemplate ( enumType , namespaceName ) . TransformText ( ) ;
129+ var enumText = new EnumTemplate ( enumType , namespaceName , enumGeneratorStrategy ) . TransformText ( ) ;
123130 AddFile ( "Enums" , enumType . FileName , enumText ) ;
124131 }
125132
@@ -134,7 +141,8 @@ public List<FileEntry> Generate(string schemaJson)
134141 var includeMutation = mutationType != null ;
135142
136143 Console . WriteLine ( "Generate Client..." ) ;
137- var templateText = new ClientTemplate ( namespaceName , clientName , queryType , mutationType , subscriptionType ) . TransformText ( ) ;
144+ var templateText = new ClientTemplate ( namespaceName , clientName , queryType , mutationType , subscriptionType )
145+ . TransformText ( ) ;
138146 var fileName = clientName + ".cs" ;
139147 AddFile ( clientDirName , fileName , templateText ) ;
140148
@@ -146,16 +154,25 @@ public List<FileEntry> Generate(string schemaJson)
146154
147155 return entries ;
148156 }
149-
157+
150158
151159 private void GenerateContextMethods ( string namespaceName , string directory , GraphqlType methodType ,
152160 string schemaType )
153161 {
154- if ( methodType == null ) { return ; }
162+ if ( methodType == null )
163+ {
164+ return ;
165+ }
155166
156167 var fileName = methodType . Name . ToPascalCase ( ) + "Methods" + ".cs" ;
157168 var templateText = new MethodsTemplate ( methodType , namespaceName , schemaType ) . TransformText ( ) ;
158169 AddFile ( directory , fileName , templateText ) ;
159170 }
160171 }
161172}
173+
174+ public enum EnumGeneratorStrategy
175+ {
176+ FailIfMissing = 0 ,
177+ AddUnknownOption = 1
178+ }
0 commit comments