mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 09:58:32 +02:00
ability to run multiple queries (and get multiple result sets) from SQL console
This commit is contained in:
parent
afe44a6fe8
commit
fab959539a
@ -6,9 +6,8 @@ import utils from "../services/utils.js";
|
|||||||
const $dialog = $("#sql-console-dialog");
|
const $dialog = $("#sql-console-dialog");
|
||||||
const $query = $('#sql-console-query');
|
const $query = $('#sql-console-query');
|
||||||
const $executeButton = $('#sql-console-execute');
|
const $executeButton = $('#sql-console-execute');
|
||||||
const $resultHead = $('#sql-console-results thead');
|
|
||||||
const $resultBody = $('#sql-console-results tbody');
|
|
||||||
const $tables = $("#sql-console-tables");
|
const $tables = $("#sql-console-tables");
|
||||||
|
const $resultContainer = $("#result-container");
|
||||||
|
|
||||||
let codeEditor;
|
let codeEditor;
|
||||||
|
|
||||||
@ -45,6 +44,10 @@ async function initEditor() {
|
|||||||
|
|
||||||
codeEditor.setOption("mode", "text/x-sqlite");
|
codeEditor.setOption("mode", "text/x-sqlite");
|
||||||
CodeMirror.autoLoadMode(codeEditor, "sql");
|
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();
|
codeEditor.focus();
|
||||||
@ -70,30 +73,36 @@ async function execute() {
|
|||||||
toastService.showMessage("Query was executed successfully.");
|
toastService.showMessage("Query was executed successfully.");
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = result.rows;
|
const results = result.results;
|
||||||
|
|
||||||
$resultHead.empty();
|
$resultContainer.empty();
|
||||||
$resultBody.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 result = rows[0];
|
||||||
const rowEl = $("<tr>");
|
const $row = $("<tr>");
|
||||||
|
|
||||||
for (const key in result) {
|
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) {
|
for (const result of rows) {
|
||||||
const rowEl = $("<tr>");
|
const $row = $("<tr>");
|
||||||
|
|
||||||
for (const key in result) {
|
for (const key in result) {
|
||||||
rowEl.append($("<td>").html(result[key]));
|
$row.append($("<td>").html(result[key]));
|
||||||
|
}
|
||||||
|
|
||||||
|
$table.append($row);
|
||||||
}
|
}
|
||||||
|
|
||||||
$resultBody.append(rowEl);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,12 +17,18 @@ async function getSchema() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function execute(req) {
|
async function execute(req) {
|
||||||
const query = req.body.query;
|
const queries = req.body.query.split("\n---");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const results = [];
|
||||||
|
|
||||||
|
for (const query of queries) {
|
||||||
|
results.push(await sql.getRows(query));
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
rows: await sql.getRows(query)
|
results
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
@ -19,11 +19,7 @@
|
|||||||
<button class="btn btn-danger" id="sql-console-execute">Execute <kbd>CTRL+ENTER</kbd></button>
|
<button class="btn btn-danger" id="sql-console-execute">Execute <kbd>CTRL+ENTER</kbd></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="width: 100%; overflow: auto;"> <!-- This is necessary for the table to be scrollable -->
|
<div id="result-container" 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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user