mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 20:13:57 +00:00
create table backup popup menu
This commit is contained in:
@@ -51,6 +51,10 @@
|
|||||||
label: 'Rename table',
|
label: 'Rename table',
|
||||||
isRename: true,
|
isRename: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Create table backup',
|
||||||
|
isDuplicateTable: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Query designer',
|
label: 'Query designer',
|
||||||
isQueryDesigner: true,
|
isQueryDesigner: true,
|
||||||
@@ -582,6 +586,34 @@
|
|||||||
apiCall('database-connections/sync-model', dbid);
|
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 {
|
} else {
|
||||||
openDatabaseObjectDetail(
|
openDatabaseObjectDetail(
|
||||||
menu.tab,
|
menu.tab,
|
||||||
@@ -627,6 +659,7 @@
|
|||||||
import { apiCall } from '../utility/api';
|
import { apiCall } from '../utility/api';
|
||||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||||
import { extractShellConnection } from '../impexp/createImpExpScript';
|
import { extractShellConnection } from '../impexp/createImpExpScript';
|
||||||
|
import { format as dateFormat } from 'date-fns';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
export let passProps;
|
export let passProps;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount, tick } from 'svelte';
|
import { onMount, tick } from 'svelte';
|
||||||
import { format } from 'date-fns';
|
import { format as dateFormat } from 'date-fns';
|
||||||
|
|
||||||
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||||
import UploadButton from '../buttons/UploadButton.svelte';
|
import UploadButton from '../buttons/UploadButton.svelte';
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
let pureFileName = null;
|
let pureFileName = null;
|
||||||
|
|
||||||
function getDefaultFileName() {
|
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 () => {
|
onMount(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user