single database fixes

This commit is contained in:
Jan Prochazka
2022-05-22 10:17:15 +02:00
parent 4098c4e504
commit fb61f263a6
5 changed files with 66 additions and 14 deletions

View File

@@ -19,6 +19,7 @@
database: connection.defaultDatabase,
keepOpen: true,
});
openedSingleDatabaseConnections.update(x => _.uniq([...x, connection._id]));
} else {
openedConnections.update(x => _.uniq([...x, connection._id]));
apiCall('server-connections/refresh', {
@@ -41,6 +42,7 @@
getCurrentConfig,
getOpenedConnections,
openedConnections,
openedSingleDatabaseConnections,
} from '../stores';
import { filterName } from 'dbgate-tools';
import { showModal } from '../modals/modalTools';
@@ -55,6 +57,7 @@
import { apiCall } from '../utility/api';
import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte';
import { closeMultipleTabs } from '../widgets/TabsPanel.svelte';
import AboutModal from '../modals/AboutModal.svelte';
export let data;
export let passProps;
@@ -72,10 +75,6 @@
};
const handleOpenConnectionTab = () => {
if ($openedConnections.includes(data._id)) {
return;
}
openNewTab({
title: getConnectionLabel(data),
icon: 'img connection',
@@ -86,6 +85,18 @@
});
};
const handleClick = () => {
if ($openedSingleDatabaseConnections.includes(data._id)) {
currentDatabase.set({ connection: data, name: data.defaultDatabase });
return;
}
if ($openedConnections.includes(data._id)) {
return;
}
handleOpenConnectionTab();
};
const handleSqlRestore = () => {
showModal(ImportDatabaseDumpModal, {
connection: data,
@@ -198,7 +209,14 @@
],
data.singleDatabase && [
{ divider: true },
getDatabaseMenuItems(data, data.defaultDatabase, $extensions, $currentDatabase, $apps),
getDatabaseMenuItems(
data,
data.defaultDatabase,
$extensions,
$currentDatabase,
$apps,
$openedSingleDatabaseConnections
),
],
driver?.databaseEngineTypes?.includes('sql') && { onClick: handleSqlRestore, text: 'Restore/import SQL dump' },
@@ -251,7 +269,7 @@
{extInfo}
colorMark={passProps?.connectionColorFactory && passProps?.connectionColorFactory({ conid: data._id })}
menu={getContextMenu}
on:click={handleOpenConnectionTab}
on:click={handleClick}
on:click
on:expand
on:dblclick={handleConnect}

View File

@@ -1,7 +1,14 @@
<script lang="ts" context="module">
export const extractKey = props => props.name;
export function getDatabaseMenuItems(connection, name, $extensions, $currentDatabase, $apps) {
export function getDatabaseMenuItems(
connection,
name,
$extensions,
$currentDatabase,
$apps,
$openedSingleDatabaseConnections
) {
const apps = filterAppsForDatabase(connection, name, $apps);
const handleNewQuery = () => {
const tooltip = `${getConnectionLabel(connection)}\n${name}`;
@@ -132,7 +139,10 @@
if (electron) {
apiCall('database-connections/disconnect', { conid: connection._id, database: name });
}
currentDatabase.set(null);
if (getCurrentDatabase()?.connection?._id == connection._id && getCurrentDatabase()?.name == name) {
currentDatabase.set(null);
}
openedSingleDatabaseConnections.update(list => list.filter(x => x != connection._id));
};
const handleExportModel = async () => {
@@ -233,8 +243,9 @@
driver?.databaseEngineTypes?.includes('keyvalue') && { onClick: handleGenerateScript, text: 'Generate script' },
_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') &&
_.get($currentDatabase, 'name') == name && { onClick: handleDisconnect, text: 'Disconnect' },
($openedSingleDatabaseConnections.includes(connection._id) ||
(_.get($currentDatabase, 'connection._id') == _.get(connection, '_id') &&
_.get($currentDatabase, 'name') == name)) && { onClick: handleDisconnect, text: 'Disconnect' },
commands.length > 0 && [
{ divider: true },
@@ -266,7 +277,10 @@
currentArchive,
currentDatabase,
extensions,
getCurrentDatabase,
getExtensions,
openedConnections,
openedSingleDatabaseConnections,
pinnedDatabases,
selectedWidget,
} from '../stores';
@@ -285,13 +299,20 @@
import newQuery from '../query/newQuery';
import { exportSqlDump } from '../utility/exportFileTools';
import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte';
import ExportDatabaseDumpModal from '../modals/ExportDatabaseDumpModal.svelte';
import ExportDatabaseDumpModal from '../modals/ExportDatabaseDumpModal.svelte';
export let data;
export let passProps;
function createMenu() {
return getDatabaseMenuItems(data.connection, data.name, $extensions, $currentDatabase, $apps);
return getDatabaseMenuItems(
data.connection,
data.name,
$extensions,
$currentDatabase,
$apps,
$openedSingleDatabaseConnections
);
}
$: isPinned = !!$pinnedDatabases.find(x => x.name == data.name && x.connection?._id == data.connection?._id);