mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-03 09:24:00 +00:00
sql case configuration #389
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 '';
|
||||
}
|
||||
|
||||
@@ -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_]*)?$/);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
8
packages/web/src/utility/SettingsListener.svelte
Normal file
8
packages/web/src/utility/SettingsListener.svelte
Normal 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>
|
||||
Reference in New Issue
Block a user