mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 22:55:59 +00:00
SYNC: Merge branch 'feature/backup-restore'
This commit is contained in:
@@ -132,7 +132,6 @@
|
||||
import { getDatabaseList, useUsedApps } from '../utility/metadataLoaders';
|
||||
import { getLocalStorage } from '../utility/storageCache';
|
||||
import { apiCall, removeVolatileMapping } from '../utility/api';
|
||||
import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte';
|
||||
import { closeMultipleTabs } from '../tabpanel/TabsPanel.svelte';
|
||||
import AboutModal from '../modals/AboutModal.svelte';
|
||||
import { tick } from 'svelte';
|
||||
@@ -141,6 +140,7 @@
|
||||
import { switchCurrentDatabase } from '../utility/common';
|
||||
import { getConnectionClickActionSetting } from '../settings/settingsTools';
|
||||
import { _t } from '../translations';
|
||||
import { isProApp } from '../utility/proTools';
|
||||
|
||||
export let data;
|
||||
export let passProps;
|
||||
@@ -231,9 +231,14 @@
|
||||
});
|
||||
};
|
||||
|
||||
const handleSqlRestore = () => {
|
||||
showModal(ImportDatabaseDumpModal, {
|
||||
connection: data,
|
||||
const handleRestoreDatabase = () => {
|
||||
openNewTab({
|
||||
title: 'Restore #',
|
||||
icon: 'img db-restore',
|
||||
tabComponent: 'RestoreDatabaseTab',
|
||||
props: {
|
||||
conid: data._id,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -364,11 +369,10 @@
|
||||
),
|
||||
],
|
||||
|
||||
driver?.databaseEngineTypes?.includes('sql') &&
|
||||
!data.isReadOnly && {
|
||||
onClick: handleSqlRestore,
|
||||
text: _t('connection.sqlRestore', { defaultMessage: 'Restore/import SQL dump' }),
|
||||
},
|
||||
driver?.supportsDatabaseRestore &&
|
||||
isProApp() &&
|
||||
hasPermission(`dbops/sql-dump/import`) &&
|
||||
!data.isReadOnly && { onClick: handleRestoreDatabase, text: 'Restore database backup' },
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -126,16 +126,27 @@
|
||||
});
|
||||
};
|
||||
|
||||
const handleSqlDump = () => {
|
||||
showModal(ExportDatabaseDumpModal, {
|
||||
connection: { ...connection, database: name },
|
||||
const handleBackupDatabase = () => {
|
||||
openNewTab({
|
||||
title: 'Backup #',
|
||||
icon: 'img db-backup',
|
||||
tabComponent: 'BackupDatabaseTab',
|
||||
props: {
|
||||
conid: connection._id,
|
||||
database: name,
|
||||
},
|
||||
});
|
||||
// exportSqlDump(connection, name);
|
||||
};
|
||||
|
||||
const handleSqlRestore = () => {
|
||||
showModal(ImportDatabaseDumpModal, {
|
||||
connection: { ...connection, database: name },
|
||||
const handleRestoreDatabase = () => {
|
||||
openNewTab({
|
||||
title: 'Restore #',
|
||||
icon: 'img db-restore',
|
||||
tabComponent: 'RestoreDatabaseTab',
|
||||
props: {
|
||||
conid: connection._id,
|
||||
database: name,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -376,11 +387,13 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify(
|
||||
!connection.isReadOnly &&
|
||||
hasPermission(`dbops/import`) && { onClick: handleImport, text: 'Import' },
|
||||
isSqlOrDoc && hasPermission(`dbops/export`) && { onClick: handleExport, text: 'Export' },
|
||||
driver?.databaseEngineTypes?.includes('sql') &&
|
||||
driver?.supportsDatabaseRestore &&
|
||||
isProApp() &&
|
||||
hasPermission(`dbops/sql-dump/import`) &&
|
||||
!connection.isReadOnly && { onClick: handleSqlRestore, text: 'Restore/import SQL dump' },
|
||||
driver?.supportsDatabaseDump &&
|
||||
hasPermission(`dbops/sql-dump/export`) && { onClick: handleSqlDump, text: 'Backup/export SQL dump' },
|
||||
!connection.isReadOnly && { onClick: handleRestoreDatabase, text: 'Restore database backup' },
|
||||
driver?.supportsDatabaseBackup &&
|
||||
isProApp() &&
|
||||
hasPermission(`dbops/sql-dump/export`) && { onClick: handleBackupDatabase, text: 'Create database backup' },
|
||||
isSqlOrDoc &&
|
||||
!connection.isReadOnly &&
|
||||
!connection.singleDatabase &&
|
||||
@@ -491,8 +504,6 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify(
|
||||
import ConfirmSqlModal, { runOperationOnDatabase, saveScriptToDatabase } from '../modals/ConfirmSqlModal.svelte';
|
||||
import { filterAppsForDatabase } from '../utility/appTools';
|
||||
import newQuery from '../query/newQuery';
|
||||
import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte';
|
||||
import ExportDatabaseDumpModal from '../modals/ExportDatabaseDumpModal.svelte';
|
||||
import ConfirmModal from '../modals/ConfirmModal.svelte';
|
||||
import { closeMultipleTabs } from '../tabpanel/TabsPanel.svelte';
|
||||
import NewCollectionModal from '../modals/NewCollectionModal.svelte';
|
||||
|
||||
@@ -1086,8 +1086,12 @@
|
||||
icon={databaseObjectIcons[data.objectTypeField]}
|
||||
menu={createMenu}
|
||||
showPinnedInsteadOfUnpin={passProps?.showPinnedInsteadOfUnpin}
|
||||
onPin={isPinned ? null : () => pinnedTables.update(list => [...list, data])}
|
||||
onUnpin={isPinned ? () => pinnedTables.update(list => list.filter(x => !testEqual(x, data))) : null}
|
||||
onPin={passProps?.ingorePin ? null : isPinned ? null : () => pinnedTables.update(list => [...list, data])}
|
||||
onUnpin={passProps?.ingorePin
|
||||
? null
|
||||
: isPinned
|
||||
? () => pinnedTables.update(list => list.filter(x => !testEqual(x, data)))
|
||||
: null}
|
||||
extInfo={getExtInfo(data)}
|
||||
isChoosed={matchDatabaseObjectAppObject($selectedDatabaseObjectAppObject, data)}
|
||||
on:click={() => handleObjectClick(data, 'leftClick')}
|
||||
|
||||
Reference in New Issue
Block a user