diff --git a/src/App.vue b/src/App.vue index d34ff79bc..fc99f430d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -130,6 +130,11 @@ const updateInfo = ref(null); const updateCheckMessage = ref(""); const appVersion = ref(""); const latestReleaseUrl = "https://github.com/t8y2/dbx/releases/latest"; +const sqlFileUnsupportedTypes = new Set(["redis", "mongodb", "elasticsearch"]); + +const hasSqlFileConnections = computed(() => + connectionStore.connections.some((connection) => !sqlFileUnsupportedTypes.has(connection.db_type)) +); const editConfig = computed(() => { const id = connectionStore.editingConnectionId; @@ -712,7 +717,7 @@ async function setupFileDrop() { {{ t('transfer.dataTransfer') }} - diff --git a/src/components/sidebar/TreeItem.vue b/src/components/sidebar/TreeItem.vue index a5e6ee889..af3b3e196 100644 --- a/src/components/sidebar/TreeItem.vue +++ b/src/components/sidebar/TreeItem.vue @@ -33,6 +33,8 @@ const props = defineProps<{ depth: number; }>(); +const sqlFileUnsupportedTypes = new Set(["redis", "mongodb", "elasticsearch"]); + function quoteIdent(name: string): string { const config = props.node.connectionId ? connectionStore.getConfig(props.node.connectionId) : undefined; return config?.db_type === "mysql" @@ -344,6 +346,10 @@ function openSqlFileExecution() { const canExpand = !leafTypes.has(props.node.type); const canPin = computed(() => pinnableTypes.has(props.node.type)); +const canOpenSqlFileExecution = computed(() => { + const config = props.node.connectionId ? connectionStore.getConfig(props.node.connectionId) : undefined; + return !!config && !sqlFileUnsupportedTypes.has(config.db_type); +}); const isPinned = computed(() => props.node.pinned || connectionStore.isTreeNodePinned(props.node.id)); const hasTypeMenu = computed(() => { const t = props.node.type; @@ -453,7 +459,7 @@ async function showMore() { {{ t('contextMenu.newQuery') }} - + {{ t('sqlFile.title') }} @@ -473,7 +479,7 @@ async function showMore() { {{ t('contextMenu.newQuery') }} - + {{ t('sqlFile.title') }}