apps loading optimalization

This commit is contained in:
Jan Prochazka
2022-01-28 15:15:58 +01:00
parent 81ec0d4909
commit 20938fb6ce
5 changed files with 82 additions and 33 deletions

View File

@@ -26,7 +26,7 @@
import { getDatabaseMenuItems } from './DatabaseAppObject.svelte';
import getElectron from '../utility/getElectron';
import getConnectionLabel from '../utility/getConnectionLabel';
import { getDatabaseList, useDbApps } from '../utility/metadataLoaders';
import { getDatabaseList, useUsedApps } from '../utility/metadataLoaders';
import { getLocalStorage } from '../utility/storageCache';
import { apiCall } from '../utility/api';
@@ -187,7 +187,7 @@
}
}
$: apps = useDbApps({ conid: data?._id, database: data.defaultDatabase });
$: apps = useUsedApps();
</script>
<AppObjectCore

View File

@@ -1,7 +1,13 @@
<script lang="ts" context="module">
export const extractKey = props => props.name;
export function filterAppsForDatabase(connection, database, $apps) {
const db = (connection?.databases || []).find(x => x.name == database);
return $apps.filter(app => db && db[`useApp:${app.name}`]);
}
export function getDatabaseMenuItems(connection, name, $extensions, $currentDatabase, $apps) {
const apps = filterAppsForDatabase(connection, name, $apps);
const handleNewQuery = () => {
const tooltip = `${getConnectionLabel(connection)}\n${name}`;
openNewTab({
@@ -169,7 +175,7 @@
const driver = findEngineDriver(connection, getExtensions());
const commands = _.flatten(($apps || []).map(x => x.commands || []));
const commands = _.flatten((apps || []).map(x => x.commands || []));
return [
{ onClick: handleNewQuery, text: 'New query', isNewQuery: true },
@@ -233,7 +239,7 @@
import { showSnackbarSuccess } from '../utility/snackbar';
import { findEngineDriver } from 'dbgate-tools';
import InputTextModal from '../modals/InputTextModal.svelte';
import { getDatabaseInfo, useDbApps } from '../utility/metadataLoaders';
import { getDatabaseInfo, useUsedApps } from '../utility/metadataLoaders';
import { openJsonDocument } from '../tabs/JsonTab.svelte';
import { apiCall } from '../utility/api';
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
@@ -247,7 +253,7 @@
}
$: isPinned = !!$pinnedDatabases.find(x => x.name == data.name && x.connection?._id == data.connection?._id);
$: apps = useDbApps({ conid: data?.connection?._id, database: data?.name });
$: apps = useUsedApps();
</script>
<AppObjectCore

View File

@@ -115,10 +115,16 @@ const appFilesLoader = ({ folder }) => ({
reloadTrigger: `app-files-changed-${folder}`,
});
const dbAppsLoader = ({ conid, database }) => ({
url: 'apps/get-apps-for-db',
params: { conid, database },
reloadTrigger: `db-apps-changed-${conid}-${database}`,
// const dbAppsLoader = ({ conid, database }) => ({
// url: 'apps/get-apps-for-db',
// params: { conid, database },
// reloadTrigger: `db-apps-changed-${conid}-${database}`,
// });
const usedAppsLoader = ({ conid, database }) => ({
url: 'apps/get-used-apps',
params: { },
reloadTrigger: `used-apps-changed`,
});
const serverStatusLoader = () => ({
@@ -433,13 +439,22 @@ export function useAppFolders(args = {}) {
return useCore(appFoldersLoader, args);
}
export function getDbApps(args = {}) {
return getCore(dbAppsLoader, args);
export function getUsedApps(args = {}) {
return getCore(usedAppsLoader, args);
}
export function useDbApps(args = {}) {
return useCore(dbAppsLoader, args);
export function useUsedApps(args = {}) {
return useCore(usedAppsLoader, args);
}
// export function getDbApps(args = {}) {
// return getCore(dbAppsLoader, args);
// }
// export function useDbApps(args = {}) {
// return useCore(dbAppsLoader, args);
// }
export function getInstalledPlugins(args = {}) {
return getCore(installedPluginsLoader, args) || [];
}