diff --git a/packages/api/src/shell/importDatabase.js b/packages/api/src/shell/importDatabase.js index b82227b19..d1a760cfd 100644 --- a/packages/api/src/shell/importDatabase.js +++ b/packages/api/src/shell/importDatabase.js @@ -13,7 +13,11 @@ class ImportStream extends stream.Transform { this.driver = driver; } async _transform(chunk, encoding, cb) { - await this.driver.script(this.pool, chunk); + try { + await this.driver.script(this.pool, chunk); + } catch (err) { + this.emit('error', err.message); + } cb(); } } diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 4ac48d15e..0fa593c9d 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -213,7 +213,7 @@ isSqlOrDoc && !connection.isReadOnly && { onClick: handleImport, text: 'Import wizard' }, isSqlOrDoc && { onClick: handleExport, text: 'Export wizard' }, driver?.supportsDatabaseDump && { onClick: handleSqlDump, text: 'Backup/export SQL dump' }, - driver?.supportsDatabaseDump && { onClick: handleSqlRestore, text: 'Restore/import SQL dump' }, + driver?.databaseEngineTypes?.includes('sql') && { onClick: handleSqlRestore, text: 'Restore/import SQL dump' }, { divider: true }, isSqlOrDoc && { onClick: handleShowDiagram, text: 'Show diagram' }, isSqlOrDoc && { onClick: handleSqlGenerator, text: 'SQL Generator' }, diff --git a/packages/web/src/modals/ImportDatabaseDumpModal.svelte b/packages/web/src/modals/ImportDatabaseDumpModal.svelte index 7353713df..12b7217a5 100644 --- a/packages/web/src/modals/ImportDatabaseDumpModal.svelte +++ b/packages/web/src/modals/ImportDatabaseDumpModal.svelte @@ -49,6 +49,22 @@ inputFile = url; }, }); + + const handleBrowse = async () => { + const electron = getElectron(); + const files = await electron.showOpenDialog({ + properties: ['openFile'], + filters: [ + { name: 'SQL Files', extensions: ['*.sql'] }, + { name: 'All Files', extensions: ['*'] }, + ], + }); + if (files && files[0]) { + const path = window.require('path'); + inputFile = files[0]; + inputLabel = path.parse(inputFile).name; + } + }; @@ -56,16 +72,19 @@ Import database dump
Source: {inputLabel}
- {#if electron} - - {:else} - - {/if} - +
+ {#if electron} + + {:else} + + {/if} + + +
- handleSubmit(e.detail)} /> + handleSubmit(e.detail)} disabled={!inputFile} />