@@ -71,10 +71,14 @@ public function generateRootQueryObject(): bool
7171 $ queryTypeName = $ objectArray ['name ' ];
7272 //$rootObjectDescr = $objectArray['description'];
7373
74- $ queryObjectBuilder = new QueryObjectClassBuilder ($ this ->writeDir , $ rootObjectName , $ this ->generationNamespace );
74+ if (array_key_exists ($ queryTypeName , $ this ->generatedObjects )) {
75+ return true ;
76+ }
77+
7578 $ this ->generatedObjects [$ queryTypeName ] = true ;
76- $ this ->appendQueryObjectFields ($ queryObjectBuilder , $ rootObjectName , $ objectArray ['fields ' ]);
7779
80+ $ queryObjectBuilder = new QueryObjectClassBuilder ($ this ->writeDir , $ rootObjectName , $ this ->generationNamespace );
81+ $ this ->appendQueryObjectFields ($ queryObjectBuilder , $ rootObjectName , $ objectArray ['fields ' ]);
7882 $ queryObjectBuilder ->build ();
7983
8084 return true ;
@@ -100,21 +104,17 @@ private function appendQueryObjectFields(QueryObjectClassBuilder $queryObjectBui
100104 if ($ typeKind === FieldTypeKindEnum::SCALAR ) {
101105 $ queryObjectBuilder ->addScalarField ($ name , $ fieldArray ['isDeprecated ' ], $ fieldArray ['deprecationReason ' ]);
102106 } elseif ($ typeKind === FieldTypeKindEnum::ENUM_OBJECT ) {
103- if (!array_key_exists ($ typeName , $ this ->generatedObjects )) {
104- $ this ->generateEnumObject ($ typeName );
105- }
107+ $ this ->generateEnumObject ($ typeName );
106108 $ queryObjectBuilder ->addScalarField ($ name , $ fieldArray ['isDeprecated ' ], $ fieldArray ['deprecationReason ' ]);
107109 } else {
108110
109111 // Generate nested type object if it wasn't generated
110- $ objectGenerated = array_key_exists ($ typeName , $ this ->generatedObjects ) ? :
111- $ this ->generateObject ($ typeName , $ typeKind );
112+ $ objectGenerated = $ this ->generateObject ($ typeName , $ typeKind );
112113 if ($ objectGenerated ) {
113114
114115 // Generate nested type arguments object if it wasn't generated
115- $ argsObjectName = $ currentTypeName . StringLiteralFormatter::formatUpperCamelCase ($ name );
116- $ argsObjectGenerated = array_key_exists ($ argsObjectName , $ this ->generatedObjects ) ? :
117- $ this ->generateArgumentsObject ($ argsObjectName , $ fieldArray ['args ' ] ?? []);
116+ $ argsObjectName = $ currentTypeName . StringLiteralFormatter::formatUpperCamelCase ($ name ) . 'ArgumentsObject ' ;
117+ $ argsObjectGenerated = $ this ->generateArgumentsObject ($ argsObjectName , $ fieldArray ['args ' ] ?? []);
118118 if ($ argsObjectGenerated ) {
119119
120120 // Add sub type as a field to the query object if all generation happened successfully
@@ -153,11 +153,15 @@ protected function generateObject(string $objectName, string $objectKind): bool
153153 */
154154 protected function generateQueryObject (string $ objectName ): bool
155155 {
156+ if (array_key_exists ($ objectName , $ this ->generatedObjects )) {
157+ return true ;
158+ }
159+
160+ $ this ->generatedObjects [$ objectName ] = true ;
156161 $ objectArray = $ this ->schemaInspector ->getObjectSchema ($ objectName );
157162 $ objectName = $ objectArray ['name ' ];
158163 $ objectBuilder = new QueryObjectClassBuilder ($ this ->writeDir , $ objectName , $ this ->generationNamespace );
159164
160- $ this ->generatedObjects [$ objectName ] = true ;
161165 $ this ->appendQueryObjectFields ($ objectBuilder , $ objectName , $ objectArray ['fields ' ]);
162166 $ objectBuilder ->build ();
163167
@@ -171,11 +175,15 @@ protected function generateQueryObject(string $objectName): bool
171175 */
172176 protected function generateInputObject (string $ objectName ): bool
173177 {
178+ if (array_key_exists ($ objectName , $ this ->generatedObjects )) {
179+ return true ;
180+ }
181+
182+ $ this ->generatedObjects [$ objectName ] = true ;
174183 $ objectArray = $ this ->schemaInspector ->getInputObjectSchema ($ objectName );
175184 $ objectName = $ objectArray ['name ' ];
176185 $ objectBuilder = new InputObjectClassBuilder ($ this ->writeDir , $ objectName , $ this ->generationNamespace );
177186
178- $ this ->generatedObjects [$ objectName ] = true ;
179187 foreach ($ objectArray ['inputFields ' ] as $ inputFieldArray ) {
180188 $ name = $ inputFieldArray ['name ' ];
181189 //$description = $inputFieldArray['description'];
@@ -184,7 +192,7 @@ protected function generateInputObject(string $objectName): bool
184192
185193 $ objectGenerated = true ;
186194 if ($ typeKind !== FieldTypeKindEnum::SCALAR ) {
187- $ objectGenerated = array_key_exists ( $ typeName , $ this -> generatedObjects ) ?: $ this ->generateObject ($ typeName , $ typeKind );
195+ $ objectGenerated = $ this ->generateObject ($ typeName , $ typeKind );
188196 }
189197
190198 if ($ objectGenerated ) {
@@ -212,11 +220,16 @@ protected function generateInputObject(string $objectName): bool
212220 */
213221 protected function generateEnumObject (string $ objectName ): bool
214222 {
223+ if (array_key_exists ($ objectName , $ this ->generatedObjects )) {
224+ return true ;
225+ }
226+
227+ $ this ->generatedObjects [$ objectName ] = true ;
228+
215229 $ objectArray = $ this ->schemaInspector ->getEnumObjectSchema ($ objectName );
216230 $ objectName = $ objectArray ['name ' ];
217231 $ objectBuilder = new EnumObjectBuilder ($ this ->writeDir , $ objectName , $ this ->generationNamespace );
218-
219- $ this ->generatedObjects [$ objectName ] = true ;
232+
220233 foreach ($ objectArray ['enumValues ' ] as $ enumValue ) {
221234 $ name = $ enumValue ['name ' ];
222235 //$description = $enumValue['description'];
@@ -235,9 +248,14 @@ protected function generateEnumObject(string $objectName): bool
235248 */
236249 protected function generateArgumentsObject (string $ argsObjectName , array $ arguments ): bool
237250 {
238- $ objectBuilder = new ArgumentsObjectClassBuilder ($ this ->writeDir , $ argsObjectName , $ this ->generationNamespace );
251+ if (array_key_exists ($ argsObjectName , $ this ->generatedObjects )) {
252+ return true ;
253+ }
239254
240255 $ this ->generatedObjects [$ argsObjectName ] = true ;
256+
257+ $ objectBuilder = new ArgumentsObjectClassBuilder ($ this ->writeDir , $ argsObjectName , $ this ->generationNamespace );
258+
241259 foreach ($ arguments as $ argumentArray ) {
242260 $ name = $ argumentArray ['name ' ];
243261 //$description = $inputFieldArray['description'];
@@ -246,7 +264,7 @@ protected function generateArgumentsObject(string $argsObjectName, array $argume
246264
247265 $ objectGenerated = true ;
248266 if ($ typeKind !== FieldTypeKindEnum::SCALAR ) {
249- $ objectGenerated = array_key_exists ( $ typeName , $ this -> generatedObjects ) ?: $ this ->generateObject ($ typeName , $ typeKind );
267+ $ objectGenerated = $ this ->generateObject ($ typeName , $ typeKind );
250268 }
251269
252270 if ($ objectGenerated ) {
0 commit comments