Sfoglia il codice sorgente

fix(core): Prevent duplicate GraphQL custom field input type definitions (#3889)

Oliver Streißelberger 2 mesi fa
parent
commit
f16f790b0b
1 ha cambiato i file con 46 aggiunte e 18 eliminazioni
  1. 46 18
      packages/core/src/api/config/graphql-custom-fields.ts

+ 46 - 18
packages/core/src/api/config/graphql-custom-fields.ts

@@ -159,17 +159,31 @@ export function addGraphQLCustomFields(
 
         if (hasCreateInputType) {
             if (writeableNonLocalizedFields.length) {
+                const createCustomFieldsInputType = `Create${entityName}CustomFieldsInput`;
+                if (!schema.getType(createCustomFieldsInputType)) {
+                    customFieldTypeDefs += `
+                        input ${createCustomFieldsInputType} {
+                           ${mapToFields(
+                               writeableNonLocalizedFields,
+                               wrapListType(getGraphQlInputType(entityName)),
+                               getGraphQlInputName,
+                           )}
+                        }
+                    `;
+                } else {
+                    customFieldTypeDefs += `
+                        extend input ${createCustomFieldsInputType} {
+                           ${mapToFields(
+                               writeableNonLocalizedFields,
+                               wrapListType(getGraphQlInputType(entityName)),
+                               getGraphQlInputName,
+                           )}
+                        }
+                    `;
+                }
                 customFieldTypeDefs += `
-                    input Create${entityName}CustomFieldsInput {
-                       ${mapToFields(
-                           writeableNonLocalizedFields,
-                           wrapListType(getGraphQlInputType(entityName)),
-                           getGraphQlInputName,
-                       )}
-                    }
-
                     extend input Create${entityName}Input {
-                        customFields: Create${entityName}CustomFieldsInput
+                        customFields: ${createCustomFieldsInputType}
                     }
                 `;
             } else {
@@ -183,17 +197,31 @@ export function addGraphQLCustomFields(
 
         if (hasUpdateInputType) {
             if (writeableNonLocalizedFields.length) {
+                const updateCustomFieldsInputType = `Update${entityName}CustomFieldsInput`;
+                if (!schema.getType(updateCustomFieldsInputType)) {
+                    customFieldTypeDefs += `
+                        input ${updateCustomFieldsInputType} {
+                           ${mapToFields(
+                               writeableNonLocalizedFields,
+                               wrapListType(getGraphQlInputType(entityName)),
+                               getGraphQlInputName,
+                           )}
+                        }
+                    `;
+                } else {
+                    customFieldTypeDefs += `
+                        extend input ${updateCustomFieldsInputType} {
+                           ${mapToFields(
+                               writeableNonLocalizedFields,
+                               wrapListType(getGraphQlInputType(entityName)),
+                               getGraphQlInputName,
+                           )}
+                        }
+                    `;
+                }
                 customFieldTypeDefs += `
-                    input Update${entityName}CustomFieldsInput {
-                       ${mapToFields(
-                           writeableNonLocalizedFields,
-                           wrapListType(getGraphQlInputType(entityName)),
-                           getGraphQlInputName,
-                       )}
-                    }
-
                     extend input Update${entityName}Input {
-                        customFields: Update${entityName}CustomFieldsInput
+                        customFields: ${updateCustomFieldsInputType}
                     }
                 `;
             } else {