mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 17:13:58 +00:00
default schema refactor
This commit is contained in:
@@ -23,3 +23,4 @@ export * from './getLogger';
|
||||
export * from './getConnectionLabel';
|
||||
export * from './detectSqlFilterBehaviour';
|
||||
export * from './filterBehaviours';
|
||||
export * from './schemaInfoTools';
|
||||
|
||||
15
packages/tools/src/schemaInfoTools.ts
Normal file
15
packages/tools/src/schemaInfoTools.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { SchemaInfo, SqlDialect } from 'dbgate-types';
|
||||
|
||||
export function findDefaultSchema(schemaList: SchemaInfo[], dialect: SqlDialect) {
|
||||
if (!schemaList) {
|
||||
return null;
|
||||
}
|
||||
const dynamicDefaultSchema = schemaList.find(x => x.isDefault);
|
||||
if (dynamicDefaultSchema) {
|
||||
return dynamicDefaultSchema.schemaName;
|
||||
}
|
||||
if (dialect.defaultSchemaName && schemaList.find(x => x.schemaName == dialect.defaultSchemaName)) {
|
||||
return dialect.defaultSchemaName;
|
||||
}
|
||||
return schemaList[0]?.schemaName;
|
||||
}
|
||||
2
packages/types/dbinfo.d.ts
vendored
2
packages/types/dbinfo.d.ts
vendored
@@ -126,6 +126,7 @@ export interface TriggerInfo extends SqlObjectInfo {}
|
||||
export interface SchemaInfo {
|
||||
objectId?: string;
|
||||
schemaName: string;
|
||||
isDefault?: boolean;
|
||||
}
|
||||
|
||||
export interface DatabaseInfoObjects {
|
||||
@@ -140,5 +141,4 @@ export interface DatabaseInfoObjects {
|
||||
|
||||
export interface DatabaseInfo extends DatabaseInfoObjects {
|
||||
engine?: string;
|
||||
defaultSchema?: string;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import _ from 'lodash';
|
||||
import { addCompleter, setCompleters } from 'ace-builds/src-noconflict/ext-language_tools';
|
||||
import { getDatabaseInfo, getSchemaList } from '../utility/metadataLoaders';
|
||||
import { getConnectionInfo, getDatabaseInfo, getSchemaList } from '../utility/metadataLoaders';
|
||||
import analyseQuerySources from './analyseQuerySources';
|
||||
import { getStringSettingsValue } from '../settings/settingsTools';
|
||||
import { findEngineDriver, findDefaultSchema } from 'dbgate-tools';
|
||||
import { getExtensions } from '../stores';
|
||||
|
||||
const COMMON_KEYWORDS = [
|
||||
'select',
|
||||
@@ -79,6 +81,9 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
|
||||
const line = session.getLine(cursor.row).slice(0, cursor.column);
|
||||
const dbinfo = await getDatabaseInfo({ conid, database });
|
||||
const schemaList = await getSchemaList({ conid, database });
|
||||
const connection = await getConnectionInfo(conid);
|
||||
const driver = findEngineDriver(connection, getExtensions());
|
||||
const defaultSchema = findDefaultSchema(schemaList, driver.dialect);
|
||||
|
||||
const convertUpper = getStringSettingsValue('sqlEditor.sqlCommandsCase', 'upperCase') == 'upperCase';
|
||||
|
||||
@@ -168,11 +173,7 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
|
||||
} else {
|
||||
list = [
|
||||
...(onlyTables ? [] : list),
|
||||
...createTableLikeList(
|
||||
schemaList,
|
||||
dbinfo,
|
||||
x => !dbinfo.defaultSchema || dbinfo.defaultSchema == x.schemaName
|
||||
),
|
||||
...createTableLikeList(schemaList, dbinfo, x => !defaultSchema || defaultSchema == x.schemaName),
|
||||
|
||||
...(onlyTables
|
||||
? []
|
||||
|
||||
Reference in New Issue
Block a user