From a643cd74dcdb35b08a8741ed1c9aab19ac1149f3 Mon Sep 17 00:00:00 2001
From: t8y2 <1156263951@qq.com>
Date: Thu, 18 Jun 2026 19:52:01 +0800
Subject: [PATCH] fix(structure): support postgres-like foreign keys
---
.../structure/TableStructureEditor.vue | 10 ++---
.../src/lib/tableStructureCapabilities.ts | 12 +++++-
.../src/table_structure_sql/dialect.rs | 5 +++
.../src/table_structure_sql/foreign_keys.rs | 35 +++++++++--------
.../dbx-core/src/table_structure_sql/tests.rs | 39 +++++++++++++++++++
5 files changed, 79 insertions(+), 22 deletions(-)
diff --git a/apps/desktop/src/components/structure/TableStructureEditor.vue b/apps/desktop/src/components/structure/TableStructureEditor.vue
index ae0c93e150..4dd8fd016c 100644
--- a/apps/desktop/src/components/structure/TableStructureEditor.vue
+++ b/apps/desktop/src/components/structure/TableStructureEditor.vue
@@ -716,7 +716,7 @@ function canDropIndex(index: EditableStructureIndex): boolean {
return !!index.original && !index.isPrimary && structureCapabilities.value.dropIndex;
}
-const canEditMysqlForeignKeys = computed(() => structureDialect.value === "mysql");
+const canEditForeignKeys = computed(() => structureCapabilities.value.foreignKey);
const canEditMysqlTriggers = computed(() => structureDialect.value === "mysql");
function generatedForeignKeyName(column = ""): string {
@@ -736,7 +736,7 @@ function generatedForeignKeyName(column = ""): string {
}
function addForeignKey() {
- if (!canEditMysqlForeignKeys.value) return;
+ if (!canEditForeignKeys.value) return;
activeTab.value = "foreignKeys";
foreignKeys.value.push({
id: `new:${uuid()}`,
@@ -761,7 +761,7 @@ function toggleDropForeignKey(foreignKey: EditableStructureForeignKey) {
}
function canEditForeignKeyDraft(foreignKey: EditableStructureForeignKey): boolean {
- return canEditMysqlForeignKeys.value && !foreignKey.markedForDrop;
+ return canEditForeignKeys.value && !foreignKey.markedForDrop;
}
function addTrigger() {
@@ -864,7 +864,7 @@ function addItemForActiveTab(): boolean {
addIndex();
return true;
}
- if (activeTab.value === "foreignKeys" && canEditMysqlForeignKeys.value) {
+ if (activeTab.value === "foreignKeys" && canEditForeignKeys.value) {
addForeignKey();
return true;
}
@@ -1027,7 +1027,7 @@ watch(activeTab, (tab) => {
{{ t("structureEditor.addIndex") }}
-