diff --git a/package.json b/package.json
index b04c91ae0..a18ca090c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"private": true,
- "version": "5.0.6-beta.4",
+ "version": "5.0.6-beta.6",
"name": "dbgate-all",
"workspaces": [
"packages/*",
diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte
index f339559fd..643751937 100644
--- a/packages/web/src/appobj/DatabaseAppObject.svelte
+++ b/packages/web/src/appobj/DatabaseAppObject.svelte
@@ -83,12 +83,7 @@
label: 'New collection name',
header: 'Create collection',
onConfirm: async newCollection => {
- const dbid = { conid: connection._id, database: name };
- await apiCall('database-connections/run-script', {
- ...dbid,
- sql: `db.createCollection('${newCollection}')`,
- });
- await apiCall('database-connections/sync-model', dbid);
+ saveScriptToDatabase({ conid: connection._id, database: name }, `db.createCollection('${newCollection}')`);
},
});
};
@@ -224,13 +219,7 @@
};
async function handleConfirmSql(sql) {
- const resp = await apiCall('database-connections/run-script', { conid: connection._id, database: name, sql });
- const { errorMessage } = resp || {};
- if (errorMessage) {
- showModal(ErrorMessageModal, { title: 'Error when executing script', message: errorMessage });
- } else {
- showSnackbarSuccess('Saved to database');
- }
+ saveScriptToDatabase({ conid: connection._id, database: name }, sql, false);
}
const driver = findEngineDriver(connection, getExtensions());
@@ -317,14 +306,14 @@
import { openJsonDocument } from '../tabs/JsonTab.svelte';
import { apiCall } from '../utility/api';
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
- import ConfirmSqlModal from '../modals/ConfirmSqlModal.svelte';
+ import ConfirmSqlModal, { saveScriptToDatabase } from '../modals/ConfirmSqlModal.svelte';
import { filterAppsForDatabase } from '../utility/appTools';
import newQuery from '../query/newQuery';
import { exportSqlDump } from '../utility/exportFileTools';
import ImportDatabaseDumpModal from '../modals/ImportDatabaseDumpModal.svelte';
import ExportDatabaseDumpModal from '../modals/ExportDatabaseDumpModal.svelte';
import ConfirmModal from '../modals/ConfirmModal.svelte';
-import { closeMultipleTabs } from '../widgets/TabsPanel.svelte';
+ import { closeMultipleTabs } from '../widgets/TabsPanel.svelte';
export let data;
export let passProps;
diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
index d07989d4d..51bc246bc 100644
--- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte
+++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
@@ -47,18 +47,22 @@
{
label: 'Drop table',
isDrop: true,
+ requiresWriteAccess: true,
},
{
label: 'Rename table',
isRename: true,
+ requiresWriteAccess: true,
},
{
label: 'Create table backup',
isDuplicateTable: true,
+ requiresWriteAccess: true,
},
{
label: 'Query designer',
isQueryDesigner: true,
+ requiresWriteAccess: true,
},
{
label: 'Show diagram',
@@ -75,6 +79,7 @@
{
label: 'Import',
isImport: true,
+ requiresWriteAccess: true,
},
{
label: 'Open as data sheet',
@@ -475,12 +480,8 @@
showModal(ConfirmModal, {
message: `Really drop collection ${data.pureName}?`,
onConfirm: async () => {
+ saveScriptToDatabase(_.pick(data, ['conid', 'database']), `db.dropCollection('${data.pureName}')`);
const dbid = _.pick(data, ['conid', 'database']);
- await apiCall('database-connections/run-script', {
- ...dbid,
- sql: `db.dropCollection('${data.pureName}')`,
- });
- apiCall('database-connections/sync-model', dbid);
},
});
} else if (menu.isRenameCollection) {
@@ -527,8 +528,7 @@
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 });
+ saveScriptToDatabase({ conid, database }, dmp.s);
},
engine: driver.engine,
});
@@ -630,7 +630,7 @@
);
}
- export function createDatabaseObjectMenu(data) {
+ export function createDatabaseObjectMenu(data, connection = null) {
const { objectTypeField } = data;
return menus[objectTypeField]
.filter(x => x)
@@ -669,6 +669,9 @@
);
}
+ if (connection?.isReadOnly && menu.requiresWriteAccess) {
+ return null;
+ }
return {
text: menu.label,
onClick: () => {
@@ -712,7 +715,7 @@
import getConnectionLabel from '../utility/getConnectionLabel';
import { exportQuickExportFile } from '../utility/exportFileTools';
import createQuickExportMenu from '../utility/createQuickExportMenu';
- import ConfirmSqlModal from '../modals/ConfirmSqlModal.svelte';
+ import ConfirmSqlModal, { saveScriptToDatabase } from '../modals/ConfirmSqlModal.svelte';
import { alterDatabaseDialog, renameDatabaseObjectDialog } from '../utility/alterDatabaseTools';
import ConfirmModal from '../modals/ConfirmModal.svelte';
import { apiCall } from '../utility/api';
@@ -729,7 +732,7 @@
}
function createMenu() {
- return createDatabaseObjectMenu(data);
+ return createDatabaseObjectMenu(data, passProps?.connection);
}
$: isPinned = !!$pinnedTables.find(x => testEqual(data, x));
diff --git a/packages/web/src/modals/ConfirmSqlModal.svelte b/packages/web/src/modals/ConfirmSqlModal.svelte
index ac0073b75..27e972a85 100644
--- a/packages/web/src/modals/ConfirmSqlModal.svelte
+++ b/packages/web/src/modals/ConfirmSqlModal.svelte
@@ -1,3 +1,21 @@
+
+