diff --git a/packages/web/src/query/SqlEditor.svelte b/packages/web/src/query/SqlEditor.svelte index e86623835..c8c1621ef 100644 --- a/packages/web/src/query/SqlEditor.svelte +++ b/packages/web/src/query/SqlEditor.svelte @@ -12,6 +12,7 @@ import useEffect from '../utility/useEffect'; import { getContext } from 'svelte'; import { mountCodeCompletion } from './codeCompletion'; + import { getCurrentSettings } from '../stores'; export let engine = null; export let conid = null; export let database = null; @@ -44,6 +45,7 @@ database, editor, getText: () => domEditor.getCodeCompletionCommandText(), + getSettings: () => getCurrentSettings(), }); } return () => {}; diff --git a/packages/web/src/query/codeCompletion.ts b/packages/web/src/query/codeCompletion.ts index 319a3ec81..3d499a9de 100644 --- a/packages/web/src/query/codeCompletion.ts +++ b/packages/web/src/query/codeCompletion.ts @@ -26,7 +26,13 @@ const COMMON_KEYWORDS = [ 'go', ]; -function createTableLikeList(schemaList, dbinfo, schemaCondition) { +function createTableShortcut(name) { + return (_.upperFirst(_.camelCase(name)).match(/[A-Z]/g) || []).join('').toLowerCase(); +} + +function createTableLikeList(schemaList, dbinfo, schemaCondition, getSettings) { + const settings = getSettings(); + const useAliases = settings?.['sqlEditor.showTableAliasesInCodeCompletion']; return [ ...(schemaList?.map(x => ({ name: x.schemaName, @@ -37,22 +43,22 @@ function createTableLikeList(schemaList, dbinfo, schemaCondition) { })) || []), ...dbinfo.tables.filter(schemaCondition).map(x => ({ name: x.pureName, - value: x.pureName, - caption: x.pureName, + value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, + caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, meta: 'table', score: 1000, })), ...dbinfo.views.filter(schemaCondition).map(x => ({ name: x.pureName, - value: x.pureName, - caption: x.pureName, + value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, + caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, meta: 'view', score: 1000, })), ...dbinfo.matviews.filter(schemaCondition).map(x => ({ name: x.pureName, - value: x.pureName, - caption: x.pureName, + value: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, + caption: useAliases ? `${x.pureName} ${createTableShortcut(x.pureName)}` : x.pureName, meta: 'matview', score: 1000, })), @@ -73,7 +79,7 @@ function createTableLikeList(schemaList, dbinfo, schemaCondition) { ]; } -export function mountCodeCompletion({ conid, database, editor, getText }) { +export function mountCodeCompletion({ conid, database, editor, getText, getSettings }) { setCompleters([]); addCompleter({ getCompletions: async function (editor, session, pos, prefix, callback) { @@ -155,7 +161,7 @@ export function mountCodeCompletion({ conid, database, editor, getText }) { } else { const schema = (schemaList || []).find(x => x.schemaName == colMatch[1]); if (schema) { - list = createTableLikeList(schemaList, dbinfo, x => x.schemaName == schema.schemaName); + list = createTableLikeList(schemaList, dbinfo, x => x.schemaName == schema.schemaName, getSettings); } } } else { @@ -173,7 +179,12 @@ export function mountCodeCompletion({ conid, database, editor, getText }) { } else { list = [ ...(onlyTables ? [] : list), - ...createTableLikeList(schemaList, dbinfo, x => !defaultSchema || defaultSchema == x.schemaName), + ...createTableLikeList( + schemaList, + dbinfo, + x => !defaultSchema || defaultSchema == x.schemaName, + getSettings + ), ...(onlyTables ? [] diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte index ee00249aa..73ce8aa66 100644 --- a/packages/web/src/settings/SettingsModal.svelte +++ b/packages/web/src/settings/SettingsModal.svelte @@ -192,7 +192,11 @@ ORDER BY ]} /> - +
SQL editor
@@ -235,6 +239,12 @@ ORDER BY label="Return only N rows from query" placeholder="(No rows limit)" /> + +
Connection