query error markers

This commit is contained in:
Jan Prochazka
2022-09-25 19:45:47 +02:00
parent 2f820d8dac
commit 1a7f06342f
9 changed files with 102 additions and 36 deletions

View File

@@ -86,10 +86,11 @@
let busy = false;
let executeNumber = 0;
let executeStartLine = 0;
let visibleResultTabs = false;
let sessionId = null;
let resultCount;
let errorMessages;
let domEditor;
$: connection = useConnectionInfo({ conid });
@@ -143,13 +144,14 @@
return !!conid && (!$connection?.isReadOnly || driver?.readOnlySessions);
}
async function executeCore(sql) {
async function executeCore(sql, startLine = 0) {
if (busy) return;
if (!sql || !sql.trim()) {
showSnackbarError('Skipped executing empty query');
return;
}
executeStartLine = startLine;
executeNumber++;
visibleResultTabs = true;
@@ -179,13 +181,14 @@
}
export async function executeCurrent() {
const sql = domEditor.getCurrentCommandText();
await executeCore(sql);
const cmd = domEditor.getCurrentCommandText();
await executeCore(cmd.text, cmd.line);
}
export async function execute() {
const selectedText = domEditor.getEditor().getSelectedText();
await executeCore(selectedText || $editorValue);
const startLine = domEditor.getEditor().getSelectionRange().start.row;
await executeCore(selectedText || $editorValue, selectedText ? startLine : 0);
}
export async function kill() {
@@ -257,6 +260,10 @@
: null,
});
function handleChangeErrors(errors) {
errorMessages = errors;
}
function createMenu() {
return [
{ command: 'query.execute' },
@@ -289,13 +296,17 @@
splitterOptions={driver?.getQuerySplitterOptions('script')}
value={$editorState.value || ''}
menu={createMenu()}
on:input={e => setEditorData(e.detail)}
on:input={e => {
setEditorData(e.detail);
errorMessages = [];
}}
on:focus={() => {
activator.activate();
invalidateCommands();
}}
bind:this={domEditor}
onExecuteFragment={sql => executeCore(sql)}
onExecuteFragment={(sql, startLine) => executeCore(sql, startLine)}
{errorMessages}
/>
{:else}
<AceEditor
@@ -319,8 +330,10 @@
eventName={sessionId ? `session-info-${sessionId}` : null}
on:messageClick={handleMesageClick}
{executeNumber}
startLine={executeStartLine}
showProcedure
showLine
onChangeErrors={handleChangeErrors}
/>
</svelte:fragment>
</ResultTabs>