diff --git a/packages/tools/src/ScriptWriter.ts b/packages/tools/src/ScriptWriter.ts index 84ab4bdb1..7c4f93b09 100644 --- a/packages/tools/src/ScriptWriter.ts +++ b/packages/tools/src/ScriptWriter.ts @@ -58,7 +58,7 @@ export class ScriptWriter { } dataDuplicator(options) { - this._put(`await dbgateApi.dataDuplicator(${JSON.stringify(options)});`); + this._put(`await dbgateApi.dataDuplicator(${JSON.stringify(options, null, 2)});`); } comment(s) { diff --git a/packages/web/src/appobj/ArchiveFolderAppObject.svelte b/packages/web/src/appobj/ArchiveFolderAppObject.svelte index 2e005264d..86e7e6394 100644 --- a/packages/web/src/appobj/ArchiveFolderAppObject.svelte +++ b/packages/web/src/appobj/ArchiveFolderAppObject.svelte @@ -19,6 +19,7 @@ import { apiCall } from '../utility/api'; import hasPermission from '../utility/hasPermission'; import { isProApp } from '../utility/proTools'; + import { extractShellConnection } from '../impexp/createImpExpScript'; export let data; @@ -66,10 +67,7 @@ await dbgateApi.deployDb(${JSON.stringify( { - connection: { - ..._.omit($currentDatabase.connection, '_id', 'displayName'), - database: $currentDatabase.name, - }, + connection: extractShellConnection($currentDatabase.connection, $currentDatabase.name), modelFolder: `archive:${data.name}`, }, undefined, diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 77c2cb11c..87bbbe4be 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -297,10 +297,7 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify( { - connection: { - ..._.omit(connection, '_id', 'displayName'), - database: name, - }, + connection: extractShellConnection(connection, name), }, undefined, 2 @@ -484,6 +481,7 @@ await dbgateApi.dropAllDbObjects(${JSON.stringify( import { isProApp } from '../utility/proTools'; import ExportDbModelModal from '../modals/ExportDbModelModal.svelte'; import ChooseArchiveFolderModal from '../modals/ChooseArchiveFolderModal.svelte'; + import { extractShellConnection } from '../impexp/createImpExpScript'; export let data; export let passProps; diff --git a/packages/web/src/impexp/createImpExpScript.ts b/packages/web/src/impexp/createImpExpScript.ts index cb001994f..0fa3c076c 100644 --- a/packages/web/src/impexp/createImpExpScript.ts +++ b/packages/web/src/impexp/createImpExpScript.ts @@ -39,7 +39,10 @@ export function extractShellConnection(connection, database) { return config.allowShellConnection ? { - ..._.omit(connection, ['_id', 'displayName', 'databases', 'connectionColor']), + ..._.omitBy( + _.omit(connection, ['_id', 'displayName', 'databases', 'connectionColor', 'status', 'unsaved']), + v => !v + ), database, } : { @@ -192,7 +195,7 @@ export function normalizeExportColumnMap(colmap) { return null; } -export default async function createImpExpScript(extensions, values, forceScript = false) { +export default async function createImpExpScript(extensions, values, forceScript = false) { const config = getCurrentConfig(); const script = config.allowShellScripting || forceScript diff --git a/packages/web/src/tabs/DataDuplicatorTab.svelte b/packages/web/src/tabs/DataDuplicatorTab.svelte index fe7fa6da7..424e125d4 100644 --- a/packages/web/src/tabs/DataDuplicatorTab.svelte +++ b/packages/web/src/tabs/DataDuplicatorTab.svelte @@ -22,6 +22,16 @@ testEnabled: () => getCurrentEditor()?.canKill(), onClick: () => getCurrentEditor().kill(), }); + registerCommand({ + id: 'dataDuplicator.generateScript', + category: 'Data duplicator', + icon: 'img shell', + name: 'Generate Script', + toolbar: true, + isRelatedToTab: true, + testEnabled: () => getCurrentEditor()?.canRun(), + onClick: () => getCurrentEditor().generateScript(), + });