diff --git a/packages/api/src/proc/databaseConnectionProcess.js b/packages/api/src/proc/databaseConnectionProcess.js index 7efbc8c86..cf8390890 100644 --- a/packages/api/src/proc/databaseConnectionProcess.js +++ b/packages/api/src/proc/databaseConnectionProcess.js @@ -1,7 +1,7 @@ const stableStringify = require('json-stable-stringify'); const { splitQuery } = require('dbgate-query-splitter'); const childProcessChecker = require('../utility/childProcessChecker'); -const { extractBoolSettingsValue, extractIntSettingsValue, getLogger, isCompositeDbName } = require('dbgate-tools'); +const { extractBoolSettingsValue, extractIntSettingsValue, getLogger, isCompositeDbName, dbNameLogCategory } = require('dbgate-tools'); const requireEngineDriver = require('../utility/requireEngineDriver'); const connectUtility = require('../utility/connectUtility'); const { handleProcessCommunication } = require('../utility/processComm'); @@ -46,6 +46,12 @@ async function checkedAsyncCall(promise) { let loadingModel = false; async function handleFullRefresh() { + if (storedConnection.useSeparateSchemas && !isCompositeDbName(dbhan?.database)) { + resolveAnalysedPromises(); + // skip loading DB structure + return; + } + loadingModel = true; const driver = requireEngineDriver(storedConnection); setStatusName('loadStructure'); @@ -60,6 +66,11 @@ async function handleFullRefresh() { } async function handleIncrementalRefresh(forceSend) { + if (storedConnection.useSeparateSchemas && !isCompositeDbName(dbhan?.database)) { + resolveAnalysedPromises(); + // skip loading DB structure + return; + } loadingModel = true; const driver = requireEngineDriver(storedConnection); setStatusName('checkStructure'); @@ -117,7 +128,7 @@ async function handleConnect({ connection, structure, globalSettings }) { logger.debug( `Connected to database, driver: ${storedConnection.engine}, separate schemas: ${ storedConnection.useSeparateSchemas ? 'YES' : 'NO' - }, 'DB: ${isCompositeDbName(dbhan.database) ? 'composite' : dbhan.database ? 'simple' : 'NO'} }` + }, 'DB: ${dbNameLogCategory(dbhan.database)} }` ); dbhan.feedback = feedback => setStatus({ feedback }); await checkedAsyncCall(readVersion()); diff --git a/packages/tools/src/DatabaseAnalyser.ts b/packages/tools/src/DatabaseAnalyser.ts index 1c3d83a69..73a8a80ee 100644 --- a/packages/tools/src/DatabaseAnalyser.ts +++ b/packages/tools/src/DatabaseAnalyser.ts @@ -5,7 +5,7 @@ import _pick from 'lodash/pick'; import _compact from 'lodash/compact'; import { getLogger } from './getLogger'; import { type Logger } from 'pinomin'; -import { isCompositeDbName, splitCompositeDbName } from './schemaInfoTools'; +import { dbNameLogCategory, isCompositeDbName, splitCompositeDbName } from './schemaInfoTools'; const logger = getLogger('dbAnalyser'); @@ -69,6 +69,7 @@ export class DatabaseAnalyser { } async fullAnalysis() { + logger.info(`Performing full analysis, DB=${dbNameLogCategory(this.dbhan.database)}, engine=${this.driver.engine}`); const res = this.addEngineField(await this._runAnalysis()); // console.log('FULL ANALYSIS', res); return res; @@ -89,6 +90,7 @@ export class DatabaseAnalyser { } async incrementalAnalysis(structure) { + logger.info(`Performing incremental analysis, DB=${dbNameLogCategory(this.dbhan.database)}, engine=${this.driver.engine}`); this.structure = structure; const modifications = await this.getModifications(); diff --git a/packages/tools/src/schemaInfoTools.ts b/packages/tools/src/schemaInfoTools.ts index 75711f2d9..20a411383 100644 --- a/packages/tools/src/schemaInfoTools.ts +++ b/packages/tools/src/schemaInfoTools.ts @@ -36,3 +36,13 @@ export function extractDbNameFromComposite(name: string) { export function extractSchemaNameFromComposite(name: string) { return splitCompositeDbName(name)?.schema; } + +export function dbNameLogCategory(database: string): string { + if (isCompositeDbName(database)) { + return '~composite'; + } + if (database) { + return '~simple'; + } + return '~nodb'; +}