diff --git a/src/public/javascripts/dialogs/sql_console.js b/src/public/javascripts/dialogs/sql_console.js index 7cc13698f..8791a4942 100644 --- a/src/public/javascripts/dialogs/sql_console.js +++ b/src/public/javascripts/dialogs/sql_console.js @@ -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 = $(''); + $resultContainer.append($table); - if (rows.length > 0) { const result = rows[0]; - const rowEl = $(""); + const $row = $(""); for (const key in result) { - rowEl.append($(""); + for (const result of rows) { + const $row = $(""); - for (const key in result) { - rowEl.append($("
").html(key)); + $row.append($("").html(key)); } - $resultHead.append(rowEl); - } + $table.append($row); - for (const result of rows) { - const rowEl = $("
").html(result[key])); + for (const key in result) { + $row.append($("").html(result[key])); + } + + $table.append($row); } - - $resultBody.append(rowEl); } } diff --git a/src/routes/api/sql.js b/src/routes/api/sql.js index 805e82acb..72dd84d85 100644 --- a/src/routes/api/sql.js +++ b/src/routes/api/sql.js @@ -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) { diff --git a/src/views/dialogs/sql_console.ejs b/src/views/dialogs/sql_console.ejs index a1339eca2..3e8cb27ff 100644 --- a/src/views/dialogs/sql_console.ejs +++ b/src/views/dialogs/sql_console.ejs @@ -19,11 +19,7 @@ -
- - - -
+