diff --git a/apps/desktop/src/components/structure/TableStructureEditor.vue b/apps/desktop/src/components/structure/TableStructureEditor.vue index 51a00e94c8..b712d8f314 100644 --- a/apps/desktop/src/components/structure/TableStructureEditor.vue +++ b/apps/desktop/src/components/structure/TableStructureEditor.vue @@ -98,6 +98,23 @@ const activeTab = ref("columns"); const loading = ref(false); const saving = ref(false); const sqlPreviewLoading = ref(false); +const ddlContent = ref(""); +const ddlLoading = ref(false); +const ddlFetched = ref(false); + +async function fetchDdl() { + if (!props.connectionId || !props.database || !props.tableName || ddlFetched.value) return; + ddlLoading.value = true; + try { + ddlContent.value = await api.getTableDdl(props.connectionId, props.database, metadataSchema.value, props.tableName); + ddlFetched.value = true; + } catch (e: any) { + ddlContent.value = `-- Error: ${e?.message || e}`; + ddlFetched.value = true; + } finally { + ddlLoading.value = false; + } +} const errorMessage = ref(""); const columns = ref([]); const indexes = ref([]); @@ -432,6 +449,8 @@ function resetState() { warnings.value = []; foreignKeys.value = []; triggers.value = []; + ddlContent.value = ""; + ddlFetched.value = false; newTableName.value = ""; tableComment.value = ""; originalTableComment.value = ""; @@ -776,6 +795,12 @@ watch(refreshVersion, (version, previous) => { if (version === previous || !version || isCreateMode.value) return; void loadStructure(true); }); + +watch(activeTab, (tab) => { + if (tab === "ddl") { + void fetchDdl(); + } +});