mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
sql console implementation
This commit is contained in:
parent
45fba6d7f8
commit
581f406a24
59
public/javascripts/dialogs/sql_console.js
Normal file
59
public/javascripts/dialogs/sql_console.js
Normal file
@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
|
||||
const sqlConsole = (function() {
|
||||
const dialogEl = $("#sql-console-dialog");
|
||||
const queryEl = $('#sql-console-query');
|
||||
const executeButton = $('#sql-console-execute');
|
||||
const resultHeadEl = $('#sql-console-results thead');
|
||||
const resultBodyEl = $('#sql-console-results tbody');
|
||||
|
||||
function showDialog() {
|
||||
glob.activeDialog = dialogEl;
|
||||
|
||||
dialogEl.dialog({
|
||||
modal: true,
|
||||
width: $(window).width(),
|
||||
height: $(window).height()
|
||||
});
|
||||
}
|
||||
|
||||
async function execute() {
|
||||
const sqlQuery = queryEl.val();
|
||||
|
||||
const results = await server.post("sql/execute", {
|
||||
query: sqlQuery
|
||||
});
|
||||
|
||||
resultHeadEl.empty();
|
||||
resultBodyEl.empty();
|
||||
|
||||
if (results.length > 0) {
|
||||
const result = results[0];
|
||||
const rowEl = $("<tr>");
|
||||
|
||||
for (const key in result) {
|
||||
rowEl.append($("<th>").html(key));
|
||||
}
|
||||
|
||||
resultHeadEl.append(rowEl);
|
||||
}
|
||||
|
||||
for (const result of results) {
|
||||
const rowEl = $("<tr>");
|
||||
|
||||
for (const key in result) {
|
||||
rowEl.append($("<td>").html(result[key]));
|
||||
}
|
||||
|
||||
resultBodyEl.append(rowEl);
|
||||
}
|
||||
}
|
||||
|
||||
$(document).bind('keydown', 'alt+o', showDialog);
|
||||
|
||||
executeButton.click(execute);
|
||||
|
||||
return {
|
||||
showDialog
|
||||
};
|
||||
})();
|
14
routes/api/sql.js
Normal file
14
routes/api/sql.js
Normal file
@ -0,0 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const auth = require('../../services/auth');
|
||||
const sql = require('../../services/sql');
|
||||
|
||||
router.post('/execute', auth.checkApiAuth, async (req, res, next) => {
|
||||
const query = req.body.query;
|
||||
|
||||
res.send(await sql.getResults(query));
|
||||
});
|
||||
|
||||
module.exports = router;
|
@ -21,6 +21,7 @@ const appInfoRoute = require('./api/app_info');
|
||||
const exportRoute = require('./api/export');
|
||||
const importRoute = require('./api/import');
|
||||
const setupApiRoute = require('./api/setup');
|
||||
const sqlRoute = require('./api/sql');
|
||||
|
||||
function register(app) {
|
||||
app.use('/', indexRoute);
|
||||
@ -45,6 +46,7 @@ function register(app) {
|
||||
app.use('/api/export', exportRoute);
|
||||
app.use('/api/import', importRoute);
|
||||
app.use('/api/setup', setupApiRoute);
|
||||
app.use('/api/sql', sqlRoute);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
@ -1 +1 @@
|
||||
module.exports = { build_date:"2017-12-13T23:36:38-05:00", build_revision: "180a7432caa0ca43986a24e7f911a64c48f8a134" };
|
||||
module.exports = { build_date:"2017-12-14T20:10:49-05:00", build_revision: "45fba6d7f8a53d4ebbd48b1205442410b6f1dc46" };
|
||||
|
@ -273,6 +273,16 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="sql-console-dialog" title="Event log" style="display: none; padding: 20px;">
|
||||
<textarea style="width: 100%; height: 100px" id="sql-console-query"></textarea>
|
||||
<button class="btn btn-danger" id="sql-console-execute">Execute</button>
|
||||
|
||||
<table id="sql-console-results" class="table table-striped" style="overflow: scroll; width: 100%;">
|
||||
<thead></thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="tooltip" style="display: none;"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -331,6 +341,7 @@
|
||||
<script src="javascripts/dialogs/recent_changes.js"></script>
|
||||
<script src="javascripts/dialogs/event_log.js"></script>
|
||||
<script src="javascripts/dialogs/edit_tree_prefix.js"></script>
|
||||
<script src="javascripts/dialogs/sql_console.js"></script>
|
||||
|
||||
<script src="javascripts/link.js"></script>
|
||||
<script src="javascripts/sync.js"></script>
|
||||
|
Loading…
x
Reference in New Issue
Block a user