diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 42eb6ee91..729e16ad9 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -21,19 +21,19 @@ export function generateTablePairingId(table: TableInfo): TableInfo { if (!table.pairingId) { return { ...table, - columns: table.columns.map(col => ({ + columns: table.columns?.map(col => ({ ...col, pairingId: col.pairingId || uuidv1(), })), - foreignKeys: table.foreignKeys.map(cnt => ({ + foreignKeys: table.foreignKeys?.map(cnt => ({ ...cnt, pairingId: cnt.pairingId || uuidv1(), })), - checks: table.checks.map(cnt => ({ + checks: table.checks?.map(cnt => ({ ...cnt, pairingId: cnt.pairingId || uuidv1(), })), - indexes: table.indexes.map(cnt => ({ + indexes: table.indexes?.map(cnt => ({ ...cnt, pairingId: cnt.pairingId || uuidv1(), })), diff --git a/packages/tools/src/schemaEditorTools.ts b/packages/tools/src/schemaEditorTools.ts index 0fb9d83ee..236f251ef 100644 --- a/packages/tools/src/schemaEditorTools.ts +++ b/packages/tools/src/schemaEditorTools.ts @@ -155,5 +155,13 @@ export function editorDeleteConstraint(table: TableInfo, constraint: ConstraintI res.foreignKeys = table.foreignKeys.filter(x => x.pairingId != constraint.pairingId); } + if (constraint.constraintType == 'index') { + res.indexes = table.indexes.filter(x => x.pairingId != constraint.pairingId); + } + + if (constraint.constraintType == 'unique') { + res.uniques = table.uniques.filter(x => x.pairingId != constraint.pairingId); + } + return res; } diff --git a/packages/web/src/elements/ForeignKeyObjectListControl.svelte b/packages/web/src/elements/ForeignKeyObjectListControl.svelte index 59b17773e..704c0aa7d 100644 --- a/packages/web/src/elements/ForeignKeyObjectListControl.svelte +++ b/packages/web/src/elements/ForeignKeyObjectListControl.svelte @@ -4,10 +4,12 @@ import ConstraintLabel from '../elements/ConstraintLabel.svelte'; import ObjectListControl from '../elements/ObjectListControl.svelte'; + import Link from './Link.svelte'; export let collection; export let title; export let clickable; + export let onRemove = null; {row?.columns.map(x => x.columnName).join(', ')} {row?.columns.map(x => x.refColumnName).join(', ')} + onRemove(row)}>Remove diff --git a/packages/web/src/elements/TableControl.svelte b/packages/web/src/elements/TableControl.svelte index 568823f25..5a12d730f 100644 --- a/packages/web/src/elements/TableControl.svelte +++ b/packages/web/src/elements/TableControl.svelte @@ -54,7 +54,7 @@ {#each columnList as col} - {col.header} + {col.header || ''} {/each} diff --git a/packages/web/src/tableeditor/IndexEditorModal.svelte b/packages/web/src/tableeditor/IndexEditorModal.svelte new file mode 100644 index 000000000..2322f8758 --- /dev/null +++ b/packages/web/src/tableeditor/IndexEditorModal.svelte @@ -0,0 +1,17 @@ + + + diff --git a/packages/web/src/tableeditor/TableEditor.svelte b/packages/web/src/tableeditor/TableEditor.svelte index 64371d699..943d37e23 100644 --- a/packages/web/src/tableeditor/TableEditor.svelte +++ b/packages/web/src/tableeditor/TableEditor.svelte @@ -36,6 +36,8 @@