better archive tools

This commit is contained in:
Jan Prochazka
2021-11-13 17:57:22 +01:00
parent 240af66809
commit f1190400a5
4 changed files with 61 additions and 9 deletions

View File

@@ -79,17 +79,26 @@ module.exports = {
}, },
deleteFile_meta: 'post', deleteFile_meta: 'post',
async deleteFile({ folder, file }) { async deleteFile({ folder, file, fileType }) {
await fs.unlink(path.join(resolveArchiveFolder(folder), `${file}.jsonl`)); await fs.unlink(path.join(resolveArchiveFolder(folder), `${file}.${fileType}`));
socket.emitChanged(`archive-files-changed-${folder}`); socket.emitChanged(`archive-files-changed-${folder}`);
}, },
renameFile_meta: 'post', renameFile_meta: 'post',
async renameFile({ folder, file, newFile }) { async renameFile({ folder, file, newFile, fileType }) {
await fs.rename(path.join(resolveArchiveFolder(folder), `${file}.jsonl`), path.join(resolveArchiveFolder(folder), `${newFile}.jsonl`)); await fs.rename(
path.join(resolveArchiveFolder(folder), `${file}.${fileType}`),
path.join(resolveArchiveFolder(folder), `${newFile}.${fileType}`)
);
socket.emitChanged(`archive-files-changed-${folder}`); socket.emitChanged(`archive-files-changed-${folder}`);
}, },
renameFolder_meta: 'post',
async renameFolder({ folder, newFolder }) {
await fs.rename(path.join(resolveArchiveFolder(folder)), path.join(resolveArchiveFolder(newFolder)));
socket.emitChanged(`archive-folders-changed`);
},
deleteFolder_meta: 'post', deleteFolder_meta: 'post',
async deleteFolder({ folder }) { async deleteFolder({ folder }) {
if (!folder) throw new Error('Missing folder parameter'); if (!folder) throw new Error('Missing folder parameter');

View File

@@ -68,22 +68,37 @@
import AppObjectCore from './AppObjectCore.svelte'; import AppObjectCore from './AppObjectCore.svelte';
import getConnectionLabel from '../utility/getConnectionLabel'; import getConnectionLabel from '../utility/getConnectionLabel';
import InputTextModal from '../modals/InputTextModal.svelte'; import InputTextModal from '../modals/InputTextModal.svelte';
import ConfirmModal from '../modals/ConfirmModal.svelte';
export let data; export let data;
const handleRename = () => { const handleRename = () => {
showModal(InputTextModal, { showModal(InputTextModal, {
value: data.file, value: data.fileName,
label: 'New file name', label: 'New file name',
header: 'Rename file', header: 'Rename file',
onConfirm: newFile => { onConfirm: newFile => {
axiosInstance.post('archive/rename-file', { file: data.fileName, folder: data.folderName, newFile }); axiosInstance.post('archive/rename-file', {
file: data.fileName,
folder: data.folderName,
fileType: data.fileType,
newFile,
});
}, },
}); });
}; };
const handleDelete = () => { const handleDelete = () => {
axiosInstance.post('archive/delete-file', { file: data.fileName, folder: data.folderName }); showModal(ConfirmModal, {
message: `Really delete file ${data.fileName}?`,
onConfirm: () => {
axiosInstance.post('archive/delete-file', {
file: data.fileName,
folder: data.folderName,
fileType: data.fileType,
});
},
});
}; };
const handleOpenRead = () => { const handleOpenRead = () => {
openArchive(data.fileName, data.folderName); openArchive(data.fileName, data.folderName);

View File

@@ -13,11 +13,36 @@
import openNewTab from '../utility/openNewTab'; import openNewTab from '../utility/openNewTab';
import AppObjectCore from './AppObjectCore.svelte'; import AppObjectCore from './AppObjectCore.svelte';
import newQuery from '../query/newQuery'; import newQuery from '../query/newQuery';
import { showModal } from '../modals/modalTools';
import ConfirmModal from '../modals/ConfirmModal.svelte';
import InputTextModal from '../modals/InputTextModal.svelte';
export let data; export let data;
const handleDelete = () => { const handleDelete = () => {
showModal(ConfirmModal, {
message: `Really delete folder ${data.name}?`,
onConfirm: () => {
axiosInstance.post('archive/delete-folder', { folder: data.name }); axiosInstance.post('archive/delete-folder', { folder: data.name });
},
});
};
const handleRename = () => {
showModal(InputTextModal, {
value: data.name,
label: 'New folder name',
header: 'Rename folder',
onConfirm: async newFolder => {
await axiosInstance.post('archive/rename-folder', {
folder: data.name,
newFolder,
});
if ($currentArchive == data.name) {
$currentArchive = newFolder;
}
},
});
}; };
const handleGenerateDeployScript = () => { const handleGenerateDeployScript = () => {
@@ -58,6 +83,7 @@ await dbgateApi.deployDb(${JSON.stringify(
function createMenu() { function createMenu() {
return [ return [
data.name != 'default' && { text: 'Delete', onClick: handleDelete }, data.name != 'default' && { text: 'Delete', onClick: handleDelete },
data.name != 'default' && { text: 'Rename', onClick: handleRename },
data.name != 'default' && data.name != 'default' &&
$currentDatabase && [ $currentDatabase && [
{ text: 'Generate deploy DB SQL', onClick: handleGenerateDeploySql }, { text: 'Generate deploy DB SQL', onClick: handleGenerateDeploySql },

View File

@@ -58,6 +58,8 @@
conid: connection._id, conid: connection._id,
database: name, database: name,
}); });
currentArchive.set(resp.data.archiveFolder);
selectedWidget.set('archive');
showSnackbarSuccess(`Saved to archive ${resp.data.archiveFolder}`); showSnackbarSuccess(`Saved to archive ${resp.data.archiveFolder}`);
}; };
@@ -107,7 +109,7 @@
import { showModal } from '../modals/modalTools'; import { showModal } from '../modals/modalTools';
import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte'; import SqlGeneratorModal from '../modals/SqlGeneratorModal.svelte';
import { getDefaultFileFormat } from '../plugins/fileformats'; import { getDefaultFileFormat } from '../plugins/fileformats';
import { currentDatabase, extensions } from '../stores'; import { currentArchive, currentDatabase, extensions, selectedWidget } from '../stores';
import axiosInstance from '../utility/axiosInstance'; import axiosInstance from '../utility/axiosInstance';
import getElectron from '../utility/getElectron'; import getElectron from '../utility/getElectron';
import openNewTab from '../utility/openNewTab'; import openNewTab from '../utility/openNewTab';