diff --git a/packages/server/src/api/controllers/ai.ts b/packages/server/src/api/controllers/ai.ts index dd6624e422..4d59365d24 100644 --- a/packages/server/src/api/controllers/ai.ts +++ b/packages/server/src/api/controllers/ai.ts @@ -66,6 +66,8 @@ async function generateTablesDelegate(data: ai.GenerationStructure) { } } + const processedRelationships: string[] = [] + for (const table of Object.values(data.tables)) { const storedTable = await sdk.tables.getTable(tableIds[table.name]) @@ -75,8 +77,12 @@ async function generateTablesDelegate(data: ai.GenerationStructure) { ...storedTable.schema, ...table.schema.reduce((acc, field) => { if (field.type === FieldType.LINK) { - const { reverseFieldName, relationshipId, ...rest } = field - acc[field.name] = { ...rest, fieldName: reverseFieldName } + // Avoid circular references + if (!processedRelationships.includes(field.relationshipId)) { + const { reverseFieldName, relationshipId, ...rest } = field + acc[field.name] = { ...rest, fieldName: reverseFieldName } + processedRelationships.push(relationshipId) + } } else { acc[field.name] = field }