mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 08:26:29 +00:00
data duplicator fixes
This commit is contained in:
@@ -125,7 +125,7 @@ class DuplicatorItemHolder {
|
|||||||
|
|
||||||
// returns list of columns that are weak references and are not resolved
|
// returns list of columns that are weak references and are not resolved
|
||||||
async getMissingWeakRefsForRow(row): Promise<string[]> {
|
async getMissingWeakRefsForRow(row): Promise<string[]> {
|
||||||
if (!this.duplicator.options.setNullForUnresolvedNullableRefs) {
|
if (!this.duplicator.options.setNullForUnresolvedNullableRefs || !this.weakReferences?.length) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -311,6 +311,30 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify(
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleImportWithDbDuplicator = () => {
|
||||||
|
showModal(ChooseArchiveFolderModal, {
|
||||||
|
message: 'Choose archive folder for import from',
|
||||||
|
onConfirm: archiveFolder => {
|
||||||
|
openNewTab(
|
||||||
|
{
|
||||||
|
title: archiveFolder,
|
||||||
|
icon: 'img duplicator',
|
||||||
|
tabComponent: 'DataDuplicatorTab',
|
||||||
|
props: {
|
||||||
|
conid: connection?._id,
|
||||||
|
database: name,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
editor: {
|
||||||
|
archiveFolder,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const driver = findEngineDriver(connection, getExtensions());
|
const driver = findEngineDriver(connection, getExtensions());
|
||||||
|
|
||||||
const commands = _.flatten((apps || []).map(x => x.commands || []));
|
const commands = _.flatten((apps || []).map(x => x.commands || []));
|
||||||
@@ -390,6 +414,14 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify(
|
|||||||
text: 'Shell: Drop all objects',
|
text: 'Shell: Drop all objects',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
driver?.databaseEngineTypes?.includes('sql') &&
|
||||||
|
hasPermission(`dbops/import`) && {
|
||||||
|
onClick: handleImportWithDbDuplicator,
|
||||||
|
text: 'Import with DB duplicator',
|
||||||
|
},
|
||||||
|
|
||||||
|
{ divider: true },
|
||||||
|
|
||||||
commands.length > 0 && [
|
commands.length > 0 && [
|
||||||
commands.map((cmd: any) => ({
|
commands.map((cmd: any) => ({
|
||||||
text: cmd.name,
|
text: cmd.name,
|
||||||
@@ -451,6 +483,7 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify(
|
|||||||
import { loadSchemaList, switchCurrentDatabase } from '../utility/common';
|
import { loadSchemaList, switchCurrentDatabase } from '../utility/common';
|
||||||
import { isProApp } from '../utility/proTools';
|
import { isProApp } from '../utility/proTools';
|
||||||
import ExportDbModelModal from '../modals/ExportDbModelModal.svelte';
|
import ExportDbModelModal from '../modals/ExportDbModelModal.svelte';
|
||||||
|
import ChooseArchiveFolderModal from '../modals/ChooseArchiveFolderModal.svelte';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
export let passProps;
|
export let passProps;
|
||||||
|
|||||||
33
packages/web/src/modals/ChooseArchiveFolderModal.svelte
Normal file
33
packages/web/src/modals/ChooseArchiveFolderModal.svelte
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||||
|
import FormArchiveFolderSelect from '../forms/FormArchiveFolderSelect.svelte';
|
||||||
|
|
||||||
|
import FormProvider from '../forms/FormProvider.svelte';
|
||||||
|
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||||
|
import ModalBase from './ModalBase.svelte';
|
||||||
|
import { closeCurrentModal } from './modalTools';
|
||||||
|
|
||||||
|
export let message = '';
|
||||||
|
export let onConfirm;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<FormProvider>
|
||||||
|
<ModalBase {...$$restProps}>
|
||||||
|
<svelte:fragment slot="header">Choose archive folder</svelte:fragment>
|
||||||
|
|
||||||
|
<div>{message}</div>
|
||||||
|
|
||||||
|
<FormArchiveFolderSelect label="Archive folder" name="archiveFolder" isNative />
|
||||||
|
|
||||||
|
<svelte:fragment slot="footer">
|
||||||
|
<FormSubmit
|
||||||
|
value="OK"
|
||||||
|
on:click={e => {
|
||||||
|
closeCurrentModal();
|
||||||
|
onConfirm(e.detail.archiveFolder);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
||||||
|
</svelte:fragment>
|
||||||
|
</ModalBase>
|
||||||
|
</FormProvider>
|
||||||
@@ -124,6 +124,7 @@
|
|||||||
options: {
|
options: {
|
||||||
rollbackAfterFinish: !!$editorState.value?.rollbackAfterFinish,
|
rollbackAfterFinish: !!$editorState.value?.rollbackAfterFinish,
|
||||||
skipRowsWithUnresolvedRefs: !!$editorState.value?.skipRowsWithUnresolvedRefs,
|
skipRowsWithUnresolvedRefs: !!$editorState.value?.skipRowsWithUnresolvedRefs,
|
||||||
|
setNullForUnresolvedNullableRefs: !!$editorState.value?.setNullForUnresolvedNullableRefs,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
return script.getScript();
|
return script.getScript();
|
||||||
|
|||||||
Reference in New Issue
Block a user