Skip to content

Commit 2bd01ba

Browse files
author
Claudio Gonzalez
committed
Fix NON_NULL type handling in embedded fields - Add proper type name resolution for NON_NULL fields using ofType.name - Fix GraphQL query generation for embedded fields with NON_NULL types - Ensure embedded entity lookup uses correct type name from ofType - Add logging for debugging field processing and metadata responses
1 parent 620ea5e commit 2bd01ba

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

src/components/utils.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ export const requestEntities = async (url) => {
6262

6363
const response = await axios(config);
6464
const responseData = response.data && response.data.data;
65+
66+
// Add logging to see the metadata response
67+
console.log('=== GRAPHQL METADATA RESPONSE ===');
68+
console.log('Full response:', JSON.stringify(responseData, null, 2));
69+
6570
const types =
6671
responseData && responseData.__schema && responseData.__schema.types;
6772
const rootQueryTypes = types
@@ -226,21 +231,34 @@ export const requestEntity = async (
226231

227232
const entityName = displayEntity.queryAll;
228233
const fields = displayEntity.fields;
234+
235+
// Add logging to see what fields are being processed
236+
console.log('=== PROCESSING ENTITY FIELDS ===');
237+
console.log('Entity name:', entityName);
238+
console.log('Fields:', JSON.stringify(fields, null, 2));
239+
229240
let queryFields = [];
230241
for (let i = 0; i < fields.length; i++) {
242+
console.log(`Processing field ${i}:`, fields[i].name, fields[i]);
243+
231244
if (fields[i].extensions == null) {
232245
queryFields.push(fields[i].name);
233246
} else {
234247
if (fields[i].type.kind !== 'LIST') {
235248
if (fields[i]?.extensions?.relation?.displayField) {
236249
if (fields[i].extensions.relation.embedded && entities) {
250+
// Handle NON_NULL types - get the actual type name from ofType
251+
const typeName = fields[i].type.kind === 'NON_NULL'
252+
? fields[i].type.ofType.name
253+
: fields[i].type.name;
254+
237255
const embeddedEntity = entities.filter(
238-
(item) => item.name === fields[i].type.name
256+
(item) => item.name === typeName
239257
)[0];
240258

241259
// Safety check for embeddedEntity
242260
if (!embeddedEntity || !embeddedEntity.fields) {
243-
console.warn(`Embedded entity not found for type: ${fields[i].type.name}`);
261+
console.warn(`Embedded entity not found for type: ${typeName}`);
244262
queryFields.push(fields[i].name);
245263
} else {
246264
let fieldsStr = '';
@@ -260,12 +278,17 @@ export const requestEntity = async (
260278
} else if (fields[i]?.extensions?.relation) {
261279
// Handle fields with relation but no displayField
262280
if (fields[i].extensions.relation.embedded && entities) {
281+
// Handle NON_NULL types - get the actual type name from ofType
282+
const typeName = fields[i].type.kind === 'NON_NULL'
283+
? fields[i].type.ofType.name
284+
: fields[i].type.name;
285+
263286
const embeddedEntity = entities.filter(
264-
(item) => item.name === fields[i].type.name
287+
(item) => item.name === typeName
265288
)[0];
266289

267290
if (!embeddedEntity || !embeddedEntity.fields) {
268-
console.warn(`Embedded entity not found for type: ${fields[i].type.name}`);
291+
console.warn(`Embedded entity not found for type: ${typeName}`);
269292
queryFields.push(fields[i].name);
270293
} else {
271294
let fieldsStr = '';

0 commit comments

Comments
 (0)