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 @@