create table backup popup menu

This commit is contained in:
Jan Prochazka
2022-04-28 13:43:10 +02:00
parent bc49435fbf
commit cd8698fac9
2 changed files with 36 additions and 3 deletions

View File

@@ -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;

View File

@@ -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">