From 902625e795101004f0d5cf6c039c97b8c7963071 Mon Sep 17 00:00:00 2001 From: Artem Niehrieiev Date: Thu, 9 Apr 2026 15:28:15 +0000 Subject: [PATCH] Enhance table settings generation by filtering required fields and updating columns view logic --- backend/src/entities/ai/ai.service.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/backend/src/entities/ai/ai.service.ts b/backend/src/entities/ai/ai.service.ts index 623c91ab6..ea50bf526 100644 --- a/backend/src/entities/ai/ai.service.ts +++ b/backend/src/entities/ai/ai.service.ts @@ -301,12 +301,26 @@ IMPORTANT: const tableInfo = tablesInformation.find((t) => t.table_name === tableSettings.table_name); const validColumnNames = tableInfo?.structure.map((col) => col.column_name) || []; + const requiredFieldsWithoutDefault = new Set( + tableInfo?.structure + .filter((col) => !col.allow_null && col.column_default === null && !checkFieldAutoincrement(col.column_default, col.extra)) + .map((col) => col.column_name) || [], + ); + const settings = new TableSettingsEntity(); settings.table_name = tableSettings.table_name; settings.display_name = tableSettings.display_name; settings.search_fields = this.filterValidColumns(tableSettings.search_fields, validColumnNames); - settings.readonly_fields = this.filterValidColumns(tableSettings.readonly_fields, validColumnNames); - settings.columns_view = this.filterValidColumns(tableSettings.columns_view, validColumnNames); + settings.readonly_fields = this.filterValidColumns(tableSettings.readonly_fields, validColumnNames).filter( + (field) => !requiredFieldsWithoutDefault.has(field), + ); + const filteredColumnsView = this.filterValidColumns(tableSettings.columns_view, validColumnNames); + for (const requiredField of requiredFieldsWithoutDefault) { + if (!filteredColumnsView.includes(requiredField)) { + filteredColumnsView.push(requiredField); + } + } + settings.columns_view = filteredColumnsView; settings.ordering = this.mapOrdering(tableSettings.ordering); settings.ordering_field = validColumnNames.includes(tableSettings.ordering_field) ? tableSettings.ordering_field