diff --git a/src/App.vue b/src/App.vue index 897f872bd8..b591546072 100644 --- a/src/App.vue +++ b/src/App.vue @@ -34,6 +34,7 @@ import DatabaseIcon from "@/components/icons/DatabaseIcon.vue"; import QueryHistory from "@/components/editor/QueryHistory.vue"; import DangerConfirmDialog from "@/components/editor/DangerConfirmDialog.vue"; import DataTransferDialog from "@/components/transfer/DataTransferDialog.vue"; +import SchemaDiffDialog from "@/components/diff/SchemaDiffDialog.vue"; import type { ConnectionConfig } from "@/types/database"; import { useConnectionStore } from "@/stores/connectionStore"; import { useQueryStore } from "@/stores/queryStore"; @@ -102,8 +103,11 @@ const selectedSql = ref(""); const formatSqlRequestId = ref(0); const showDangerDialog = ref(false); const showTransferDialog = ref(false); +const showSchemaDiffDialog = ref(false); const transferPrefillConnectionId = ref(""); const transferPrefillDatabase = ref(""); +const schemaDiffPrefillConnectionId = ref(""); +const schemaDiffPrefillDatabase = ref(""); const databaseOptions = ref>({}); const loadingDatabaseOptions = ref>({}); const checkingUpdates = ref(false); @@ -135,6 +139,15 @@ watch(() => connectionStore.transferSource, (v) => { } }); +watch(() => connectionStore.schemaDiffSource, (v) => { + if (v) { + schemaDiffPrefillConnectionId.value = v.connectionId; + schemaDiffPrefillDatabase.value = v.database; + showSchemaDiffDialog.value = true; + connectionStore.schemaDiffSource = null; + } +}); + function onConnectionConnectStarted(name: string) { toast(t("connection.connecting", { name }), 30000); } @@ -1140,6 +1153,11 @@ async function setupFileDrop() { :prefill-connection-id="transferPrefillConnectionId" :prefill-database="transferPrefillDatabase" /> + diff --git a/src/components/diff/SchemaDiffDialog.vue b/src/components/diff/SchemaDiffDialog.vue new file mode 100644 index 0000000000..1754cd7a12 --- /dev/null +++ b/src/components/diff/SchemaDiffDialog.vue @@ -0,0 +1,386 @@ + + +