From 3f40599c4fa7c792fe6d31841763b76154a2cd50 Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Thu, 26 Mar 2026 20:57:10 +0100 Subject: [PATCH] fix: handle missing columns/foreignKeys in schema conversion Co-Authored-By: Claude Opus 4.5 --- .../lib/components/DatatableSchemaDiff.svelte | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/frontend/src/lib/components/DatatableSchemaDiff.svelte b/frontend/src/lib/components/DatatableSchemaDiff.svelte index b2c303fab3..737a62eb67 100644 --- a/frontend/src/lib/components/DatatableSchemaDiff.svelte +++ b/frontend/src/lib/components/DatatableSchemaDiff.svelte @@ -19,27 +19,34 @@ const result: DatabaseSchema = {} for (const [schemaName, tables] of Object.entries(apiSchema)) { result[schemaName] = {} - for (const [tableName, table] of Object.entries(tables)) { + for (const [tableName, table] of Object.entries(tables as Record)) { + if (!table || typeof table !== 'object') continue result[schemaName][tableName] = { - name: table.name, - columns: table.columns.map( - (c): TableEditorValuesColumn => ({ + name: table.name ?? tableName, + columns: (table.columns ?? []).map( + (c: any): TableEditorValuesColumn => ({ name: c.name, datatype: c.datatype, - primaryKey: c.primary_key, - defaultValue: c.default_value, + primaryKey: c.primary_key ?? c.primaryKey, + defaultValue: c.default_value ?? c.defaultValue, nullable: c.nullable }) ), - foreignKeys: table.foreign_keys.map( - (fk): TableEditorForeignKey => ({ - targetTable: fk.target_table, - columns: fk.columns.map((col) => ({ - sourceColumn: col.source_column, - targetColumn: col.target_column + foreignKeys: (table.foreign_keys ?? table.foreignKeys ?? []).map( + (fk: any): TableEditorForeignKey => ({ + targetTable: fk.target_table ?? fk.targetTable, + columns: (fk.columns ?? []).map((col: any) => ({ + sourceColumn: col.source_column ?? col.sourceColumn, + targetColumn: col.target_column ?? col.targetColumn })), - onDelete: (fk.on_delete as 'CASCADE' | 'SET NULL' | 'NO ACTION') ?? 'NO ACTION', - onUpdate: (fk.on_update as 'CASCADE' | 'SET NULL' | 'NO ACTION') ?? 'NO ACTION', + onDelete: (fk.on_delete ?? fk.onDelete ?? 'NO ACTION') as + | 'CASCADE' + | 'SET NULL' + | 'NO ACTION', + onUpdate: (fk.on_update ?? fk.onUpdate ?? 'NO ACTION') as + | 'CASCADE' + | 'SET NULL' + | 'NO ACTION', fk_constraint_name: fk.fk_constraint_name }) ), @@ -349,6 +356,7 @@ } +

Datatable schema changes

{#if loading}
Loading datatable diffs... @@ -357,7 +365,6 @@
Failed to load datatable diffs: {error}
{:else if diffs.length > 0}
-

Datatable schema changes

{#each diffs as diff}
+{:else} + No changes detected {/if}