diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 7c81384ad..f9f1f11e7 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -199,7 +199,7 @@ module.exports = { return res.result || null; }, - async loadDataCore(msgtype, { conid, database, ...args }, req) { + async loadDataCore(msgtype, { conid, database, ...args }, req) { testConnectionPermission(conid, req); const opened = await this.ensureOpened(conid, database); const res = await this.sendRequest(opened, { msgtype, ...args }); @@ -219,6 +219,11 @@ module.exports = { return this.loadDataCore('schemaList', { conid, database }); }, + dispatchDatabaseChangedEvent_meta: true, + dispatchDatabaseChangedEvent({ event, conid, database }) { + socket.emitChanged(event, { conid, database }); + }, + loadKeys_meta: true, async loadKeys({ conid, database, root, filter }, req) { testConnectionPermission(conid, req); diff --git a/packages/web/src/modals/ConfirmSqlModal.svelte b/packages/web/src/modals/ConfirmSqlModal.svelte index 2734bf2b1..3b328eaf3 100644 --- a/packages/web/src/modals/ConfirmSqlModal.svelte +++ b/packages/web/src/modals/ConfirmSqlModal.svelte @@ -1,4 +1,4 @@ - diff --git a/packages/web/src/widgets/SchemaSelector.svelte b/packages/web/src/widgets/SchemaSelector.svelte index d697de4b1..eef13f511 100644 --- a/packages/web/src/widgets/SchemaSelector.svelte +++ b/packages/web/src/widgets/SchemaSelector.svelte @@ -42,7 +42,7 @@ return res; } - $: schemaList = _.uniq( + $: realSchemaList = _.uniq( _.compact([selectedSchema, ...Object.keys(countBySchema), ...(schemaList?.map(x => x.schemaName) ?? [])]) ); $: countBySchema = computeCountBySchema(objectList ?? []); @@ -54,10 +54,14 @@ label: 'Schema name', onConfirm: async name => { const dbid = { conid, database }; - await runOperationOnDatabase(dbid, { - type: 'createSchema', - schemaName: name, - }); + await runOperationOnDatabase( + dbid, + { + type: 'createSchema', + schemaName: name, + }, + 'schema-list-changed' + ); if (selectedSchema) { selectedSchema = name; } @@ -69,10 +73,14 @@ message: `Really drop schema ${$appliedCurrentSchema}?`, onConfirm: async () => { const dbid = { conid, database }; - runOperationOnDatabase(dbid, { - type: 'dropSchema', - schemaName: $appliedCurrentSchema, - }); + runOperationOnDatabase( + dbid, + { + type: 'dropSchema', + schemaName: $appliedCurrentSchema, + }, + 'schema-list-changed' + ); selectedSchema = null; }, }); @@ -81,14 +89,14 @@ $: selectedSchema = localStorage.getItem(valueStorageKey ?? ''); -{#if schemaList.length > 0} +{#if realSchemaList.length > 0}
Schema:
({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })), + ...realSchemaList.map(x => ({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })), // ...schemaList.filter(x => countBySchema[x]).map(x => ({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })), // ...schemaList.filter(x => !countBySchema[x]).map(x => ({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })), ]} diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index 43922883c..99dba0016 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -16,7 +16,13 @@ import InlineButton from '../buttons/InlineButton.svelte'; import SearchInput from '../elements/SearchInput.svelte'; import WidgetsInnerContainer from './WidgetsInnerContainer.svelte'; - import { useConnectionInfo, useDatabaseInfo, useDatabaseStatus, useSchemaList, useUsedApps } from '../utility/metadataLoaders'; + import { + useConnectionInfo, + useDatabaseInfo, + useDatabaseStatus, + useSchemaList, + useUsedApps, + } from '../utility/metadataLoaders'; import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte'; import AppObjectList from '../appobj/AppObjectList.svelte'; import _ from 'lodash'; @@ -80,6 +86,7 @@ const handleRefreshDatabase = () => { apiCall('database-connections/refresh', { conid, database }); + apiCall('database-connections/dispatch-database-changed-event', { event: 'schema-list-changed', conid, database }); }; function createAddMenu() {