ability to run multiple queries (and get multiple result sets) from SQL console

This commit is contained in:
zadam 2019-12-08 11:20:44 +01:00
parent afe44a6fe8
commit fab959539a
3 changed files with 34 additions and 23 deletions

View File

@ -6,9 +6,8 @@ import utils from "../services/utils.js";
const $dialog = $("#sql-console-dialog");
const $query = $('#sql-console-query');
const $executeButton = $('#sql-console-execute');
const $resultHead = $('#sql-console-results thead');
const $resultBody = $('#sql-console-results tbody');
const $tables = $("#sql-console-tables");
const $resultContainer = $("#result-container");
let codeEditor;
@ -45,6 +44,10 @@ async function initEditor() {
codeEditor.setOption("mode", "text/x-sqlite");
CodeMirror.autoLoadMode(codeEditor, "sql");
codeEditor.setValue(`SELECT title, isProtected, type, mime FROM notes WHERE noteId = 'root';
---
SELECT noteId, parentNoteId, notePosition, prefix FROM branches WHERE branchId = 'root';`);
}
codeEditor.focus();
@ -70,30 +73,36 @@ async function execute() {
toastService.showMessage("Query was executed successfully.");
}
const rows = result.rows;
const results = result.results;
$resultHead.empty();
$resultBody.empty();
$resultContainer.empty();
for (const rows of results) {
if (rows.length === 0) {
continue;
}
const $table = $('<table class="table table-striped">');
$resultContainer.append($table);
if (rows.length > 0) {
const result = rows[0];
const rowEl = $("<tr>");
const $row = $("<tr>");
for (const key in result) {
rowEl.append($("<th>").html(key));
$row.append($("<th>").html(key));
}
$resultHead.append(rowEl);
}
$table.append($row);
for (const result of rows) {
const rowEl = $("<tr>");
for (const result of rows) {
const $row = $("<tr>");
for (const key in result) {
rowEl.append($("<td>").html(result[key]));
for (const key in result) {
$row.append($("<td>").html(result[key]));
}
$table.append($row);
}
$resultBody.append(rowEl);
}
}

View File

@ -17,12 +17,18 @@ async function getSchema() {
}
async function execute(req) {
const query = req.body.query;
const queries = req.body.query.split("\n---");
try {
const results = [];
for (const query of queries) {
results.push(await sql.getRows(query));
}
return {
success: true,
rows: await sql.getRows(query)
results
};
}
catch (e) {

View File

@ -19,11 +19,7 @@
<button class="btn btn-danger" id="sql-console-execute">Execute <kbd>CTRL+ENTER</kbd></button>
</div>
<div style="width: 100%; overflow: auto;"> <!-- This is necessary for the table to be scrollable -->
<table id="sql-console-results" class="table table-striped">
<thead></thead>
<tbody></tbody>
</table>
<div id="result-container" style="width: 100%; overflow: auto;"> <!-- This is necessary for the table to be scrollable -->
</div>
</div>
</div>