store query parameters

This commit is contained in:
SPRINX0\prochazka
2024-10-10 13:21:48 +02:00
parent 0b13850eca
commit e448f63ec3
2 changed files with 15 additions and 3 deletions

View File

@@ -31,6 +31,11 @@
{#each parameterNames as parameterName, index} {#each parameterNames as parameterName, index}
<FormTextField label={parameterName} name={parameterName} focused={index == 0} /> <FormTextField label={parameterName} name={parameterName} focused={index == 0} />
{/each} {/each}
<div>
String values must be 'quoted'. You can use valid SQL expressions.
</div>
<svelte:fragment slot="footer"> <svelte:fragment slot="footer">
<FormSubmit value="Run query" on:click={handleSubmit} /> <FormSubmit value="Run query" on:click={handleSubmit} />
<FormStyledButton value="Close" on:click={handleClose} /> <FormStyledButton value="Close" on:click={handleClose} />

View File

@@ -75,7 +75,7 @@
import InsertJoinModal from '../modals/InsertJoinModal.svelte'; import InsertJoinModal from '../modals/InsertJoinModal.svelte';
import useTimerLabel from '../utility/useTimerLabel'; import useTimerLabel from '../utility/useTimerLabel';
import createActivator, { getActiveComponent } from '../utility/createActivator'; import createActivator, { getActiveComponent } from '../utility/createActivator';
import { findEngineDriver } from 'dbgate-tools'; import { findEngineDriver, safeJsonParse } from 'dbgate-tools';
import AceEditor from '../query/AceEditor.svelte'; import AceEditor from '../query/AceEditor.svelte';
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte'; import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
import { showSnackbarError } from '../utility/snackbar'; import { showSnackbarError } from '../utility/snackbar';
@@ -227,10 +227,16 @@
const parameters = extractQueryParameters(sql, getParameterSplitterOptions()); const parameters = extractQueryParameters(sql, getParameterSplitterOptions());
if (parameters.length > 0) { if (parameters.length > 0) {
const defaultValues = {
...parameters.reduce((acc, x) => ({ ...acc, [x]: '' }), {}),
...safeJsonParse(localStorage.getItem(`tabdata_queryParams_${tabid}`)),
};
showModal(QueryParametersModal, { showModal(QueryParametersModal, {
parameterNames: parameters, parameterNames: parameters,
parameterValues: parameters.reduce((acc, x) => ({ ...acc, [x]: '' }), {}), parameterValues: defaultValues,
onExecute: values => { onExecute: values => {
localStorage.setItem(`tabdata_queryParams_${tabid}`, JSON.stringify(values));
const newSql = replaceQueryParameters(sql, values, getParameterSplitterOptions()); const newSql = replaceQueryParameters(sql, values, getParameterSplitterOptions());
executeCoreWithParams(newSql, startLine); executeCoreWithParams(newSql, startLine);
}, },
@@ -409,7 +415,7 @@
} }
let isInitialized = false; let isInitialized = false;
let queryParameterStyle = ':'; let queryParameterStyle = localStorage.getItem(`tabdata_queryParamStyle_${tabid}`) ?? ':';
</script> </script>
<ToolStripContainer bind:this={domToolStrip}> <ToolStripContainer bind:this={domToolStrip}>
@@ -488,6 +494,7 @@
label: param.text, label: param.text,
onClick: () => { onClick: () => {
queryParameterStyle = param.value; queryParameterStyle = param.value;
localStorage.setItem(`tabdata_queryParamStyle_${tabid}`, queryParameterStyle);
}, },
}))} }))}
label={QUERY_PARAMETER_STYLES.find(x => x.value == queryParameterStyle)?.text} label={QUERY_PARAMETER_STYLES.find(x => x.value == queryParameterStyle)?.text}