diff --git a/packages/web/src/modals/QueryParametersModal.svelte b/packages/web/src/modals/QueryParametersModal.svelte index 56a6610d3..ca28c090a 100644 --- a/packages/web/src/modals/QueryParametersModal.svelte +++ b/packages/web/src/modals/QueryParametersModal.svelte @@ -31,6 +31,11 @@ {#each parameterNames as parameterName, index} {/each} + +
+ String values must be 'quoted'. You can use valid SQL expressions. +
+ diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index 45956a0ef..adc8c0db9 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -75,7 +75,7 @@ import InsertJoinModal from '../modals/InsertJoinModal.svelte'; import useTimerLabel from '../utility/useTimerLabel'; import createActivator, { getActiveComponent } from '../utility/createActivator'; - import { findEngineDriver } from 'dbgate-tools'; + import { findEngineDriver, safeJsonParse } from 'dbgate-tools'; import AceEditor from '../query/AceEditor.svelte'; import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte'; import { showSnackbarError } from '../utility/snackbar'; @@ -227,10 +227,16 @@ const parameters = extractQueryParameters(sql, getParameterSplitterOptions()); if (parameters.length > 0) { + const defaultValues = { + ...parameters.reduce((acc, x) => ({ ...acc, [x]: '' }), {}), + ...safeJsonParse(localStorage.getItem(`tabdata_queryParams_${tabid}`)), + }; + showModal(QueryParametersModal, { parameterNames: parameters, - parameterValues: parameters.reduce((acc, x) => ({ ...acc, [x]: '' }), {}), + parameterValues: defaultValues, onExecute: values => { + localStorage.setItem(`tabdata_queryParams_${tabid}`, JSON.stringify(values)); const newSql = replaceQueryParameters(sql, values, getParameterSplitterOptions()); executeCoreWithParams(newSql, startLine); }, @@ -409,7 +415,7 @@ } let isInitialized = false; - let queryParameterStyle = ':'; + let queryParameterStyle = localStorage.getItem(`tabdata_queryParamStyle_${tabid}`) ?? ':'; @@ -488,6 +494,7 @@ label: param.text, onClick: () => { queryParameterStyle = param.value; + localStorage.setItem(`tabdata_queryParamStyle_${tabid}`, queryParameterStyle); }, }))} label={QUERY_PARAMETER_STYLES.find(x => x.value == queryParameterStyle)?.text}