mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 18:35:58 +00:00
create table backup popup menu
This commit is contained in:
@@ -51,6 +51,10 @@
|
||||
label: 'Rename table',
|
||||
isRename: true,
|
||||
},
|
||||
{
|
||||
label: 'Create table backup',
|
||||
isDuplicateTable: true,
|
||||
},
|
||||
{
|
||||
label: 'Query designer',
|
||||
isQueryDesigner: true,
|
||||
@@ -582,6 +586,34 @@
|
||||
apiCall('database-connections/sync-model', dbid);
|
||||
},
|
||||
});
|
||||
} else if (menu.isDuplicateTable) {
|
||||
const driver = await getDriver();
|
||||
const dmp = driver.createDumper();
|
||||
const newTable = _.cloneDeep(data);
|
||||
const { conid, database } = data;
|
||||
|
||||
newTable.pureName = `_${newTable.pureName}_${dateFormat(new Date(), 'yyyy-MM-dd-hh-mm-ss')}`;
|
||||
newTable.columns.forEach(x => {
|
||||
x.autoIncrement = false;
|
||||
});
|
||||
newTable.foreignKeys = [];
|
||||
dmp.createTable(newTable);
|
||||
dmp.putCmd(
|
||||
'^insert ^into %f(%,i) ^select %,i from %f',
|
||||
newTable,
|
||||
newTable.columns.map(x => x.columnName),
|
||||
data.columns.map(x => x.columnName),
|
||||
data
|
||||
);
|
||||
|
||||
showModal(ConfirmSqlModal, {
|
||||
sql: dmp.s,
|
||||
onConfirm: async () => {
|
||||
const resp = await apiCall('database-connections/run-script', { conid, database, sql: dmp.s });
|
||||
await apiCall('database-connections/sync-model', { conid, database });
|
||||
},
|
||||
engine: driver.engine,
|
||||
});
|
||||
} else {
|
||||
openDatabaseObjectDetail(
|
||||
menu.tab,
|
||||
@@ -627,6 +659,7 @@
|
||||
import { apiCall } from '../utility/api';
|
||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||
import { extractShellConnection } from '../impexp/createImpExpScript';
|
||||
import { format as dateFormat } from 'date-fns';
|
||||
|
||||
export let data;
|
||||
export let passProps;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { onMount, tick } from 'svelte';
|
||||
import { format } from 'date-fns';
|
||||
import { format as dateFormat } from 'date-fns';
|
||||
|
||||
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||
import UploadButton from '../buttons/UploadButton.svelte';
|
||||
@@ -23,7 +23,7 @@
|
||||
let pureFileName = null;
|
||||
|
||||
function getDefaultFileName() {
|
||||
return `${connection.database}-${format(new Date(), 'yyyy-MM-dd-hh-mm-ss')}.sql`;
|
||||
return `${connection.database}-${dateFormat(new Date(), 'yyyy-MM-dd-hh-mm-ss')}.sql`;
|
||||
}
|
||||
|
||||
onMount(async () => {
|
||||
@@ -88,7 +88,7 @@
|
||||
<FormProvider>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header">Export database dump</svelte:fragment>
|
||||
|
||||
|
||||
<div class="m-3">Target: {outputLabel}</div>
|
||||
|
||||
<div class="flex">
|
||||
|
||||
Reference in New Issue
Block a user