mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 02:36:00 +00:00
query error markers
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user