diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index f9d84fb0c..de8301bf6 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', @@ -613,7 +618,7 @@ ); } - export function createDatabaseObjectMenu(data) { + export function createDatabaseObjectMenu(data, connection = null) { const { objectTypeField } = data; return menus[objectTypeField] .filter(x => x) @@ -652,6 +657,9 @@ ); } + if (connection?.isReadOnly && menu.requiresWriteAccess) { + return null; + } return { text: menu.label, onClick: () => { @@ -712,7 +720,7 @@ } function createMenu() { - return createDatabaseObjectMenu(data); + return createDatabaseObjectMenu(data, passProps?.connection); } $: isPinned = !!$pinnedTables.find(x => testEqual(data, x)); diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index 5ce05a76e..1aa440ef8 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -145,7 +145,7 @@ data.objectTypeField == 'tables' || data.objectTypeField == 'views' || data.objectTypeField == 'matviews'} expandIconFunc={chevronExpandIcon} {filter} - passProps={{ showPinnedInsteadOfUnpin: true }} + passProps={{ showPinnedInsteadOfUnpin: true, connection: $connection }} /> {/if}