sql case configuration #389

This commit is contained in:
Jan Prochazka
2022-10-08 21:14:18 +02:00
parent f19835203f
commit dc0001a8cd
7 changed files with 62 additions and 14 deletions

View File

@@ -19,6 +19,7 @@
import AppTitleProvider from './utility/AppTitleProvider.svelte';
import getElectron from './utility/getElectron';
import AppStartInfo from './widgets/AppStartInfo.svelte';
import SettingsListener from './utility/SettingsListener.svelte';
let loadedApi = false;
let loadedPlugins = false;
@@ -79,6 +80,7 @@
<AppTitleProvider />
{#if loadedPlugins}
<OpenTabsOnStartup />
<SettingsListener />
<Screen />
{:else}
<AppStartInfo

View File

@@ -1,4 +1,5 @@
<script lang="ts">
import { SqlDumper } from 'dbgate-tools';
import FormStyledButton from '../buttons/FormStyledButton.svelte';
import TableControl from '../elements/TableControl.svelte';
import TextField from '../forms/TextField.svelte';
@@ -63,9 +64,11 @@
const source = sources[sourceIndex];
const target = targets[targetIndex];
if (source && target) {
return `${JOIN_TYPES[joinIndex]} ${target.refTable}${alias ? ` ${alias}` : ''} ON ${target.columnMap
return `${SqlDumper.convertKeywordCase(JOIN_TYPES[joinIndex])} ${target.refTable}${
alias ? ` ${alias}` : ''
} ${SqlDumper.convertKeywordCase('ON')} ${target.columnMap
.map(col => `${source.name}.${col.columnName} = ${alias || target.refTable}.${col.refColumnName}`)
.join(' AND ')}`;
.join(SqlDumper.convertKeywordCase(' AND '))}`;
}
return '';
}

View File

@@ -2,6 +2,7 @@ import _ from 'lodash';
import { addCompleter, setCompleters } from 'ace-builds/src-noconflict/ext-language_tools';
import { getDatabaseInfo } from '../utility/metadataLoaders';
import analyseQuerySources from './analyseQuerySources';
import { getStringSettingsValue } from '../settings/settingsTools';
const COMMON_KEYWORDS = [
'select',
@@ -78,13 +79,21 @@ export function mountCodeCompletion({ conid, database, editor, getText }) {
const line = session.getLine(cursor.row).slice(0, cursor.column);
const dbinfo = await getDatabaseInfo({ conid, database });
let list = COMMON_KEYWORDS.map(word => ({
name: word,
value: word,
caption: word,
meta: 'keyword',
score: 800,
}));
const convertUpper = getStringSettingsValue('sqlEditor.sqlCommandsCase', 'upperCase') == 'upperCase';
let list = COMMON_KEYWORDS.map(word => {
if (convertUpper) {
word = word.toUpperCase();
}
return {
name: word,
value: word,
caption: word,
meta: 'keyword',
score: 800,
};
});
if (dbinfo) {
const colMatch = line.match(/([a-zA-Z0-9_]+)\.([a-zA-Z0-9_]*)?$/);

View File

@@ -111,6 +111,19 @@ ORDER BY
defaultValue="30"
disabled={values['connection.autoRefresh'] === false}
/>
<div class="heading">SQL editor</div>
<FormSelectField
label="SQL commands case"
name="sqlEditor.sqlCommandsCase"
isNative
defaultValue="upperCase"
options={[
{ value: 'upperCase', label: 'UPPER CASE' },
{ value: 'lowerCase', label: 'lower case' },
]}
/>
</svelte:fragment>
<svelte:fragment slot="2">
<div class="heading">Application theme</div>

View File

@@ -21,3 +21,10 @@ export function getBoolSettingsValue(name, defaultValue) {
if (res == null) return defaultValue;
return !!res;
}
export function getStringSettingsValue(name, defaultValue) {
const settings = getCurrentSettings();
const res = settings[name];
if (res == null) return defaultValue;
return res;
}

View File

@@ -0,0 +1,8 @@
<script lang="ts">
import { SqlDumper } from 'dbgate-tools';
import { useSettings } from './metadataLoaders';
const settings = useSettings();
$: SqlDumper.keywordsCase = $settings?.['sqlEditor.sqlCommandsCase'] || 'upperCase';
</script>