WIP for counting note and subtree size

This commit is contained in:
zadam 2021-01-20 22:17:40 +01:00
parent d67e1552ee
commit 200982655f
3 changed files with 73 additions and 0 deletions

View File

@ -1,4 +1,5 @@
import CollapsibleWidget from "../collapsible_widget.js";
import server from "../../services/server.js";
const TPL = `
<table class="note-info-widget-table">
@ -78,6 +79,14 @@ export default class NoteInfoWidget extends CollapsibleWidget {
else {
this.$mime.empty();
}
let resp = await server.get(`stats/note-size/${note.noteId}`);
console.log(resp);
resp = await server.get(`stats/subtree-size/${note.noteId}`);
console.log(resp);
}
entitiesReloadedEvent({loadResults}) {

60
src/routes/api/stats.js Normal file
View File

@ -0,0 +1,60 @@
const sql = require('../../services/sql');
const noteCache = require('../../services/note_cache/note_cache');
function getNoteSize(req) {
const {noteId} = req.params;
const noteSize = sql.getValue(`
SELECT
COALESCE((SELECT LENGTH(content) FROM note_contents WHERE noteId = ?), 0)
+
COALESCE(
(SELECT SUM(LENGTH(content))
FROM note_revisions
JOIN note_revision_contents USING (noteRevisionId)
WHERE note_revisions.noteId = ?),
0
)`, [noteId, noteId]);
return {
noteSize
};
}
function getSubtreeSize(req) {
const {noteId} = req.params;
const note = noteCache.notes[noteId];
if (!note) {
return [404, `Note ${noteId} was not found.`];
}
const subTreeNoteIds = note.subtreeNotes.map(note => note.noteId);
sql.fillNoteIdList(subTreeNoteIds);
const subTreeSize = sql.getValue(`
SELECT
COALESCE((
SELECT SUM(LENGTH(content))
FROM note_contents
JOIN param_list ON param_list.paramId = note_contents.noteId
), 0)
+
COALESCE(
(SELECT SUM(LENGTH(content))
FROM note_revisions
JOIN note_revision_contents USING (noteRevisionId)
JOIN param_list ON param_list.paramId = note_revisions.noteId),
0
)`);
return {
subTreeSize
};
}
module.exports = {
getNoteSize,
getSubtreeSize
};

View File

@ -37,6 +37,7 @@ const clipperRoute = require('./api/clipper');
const similarNotesRoute = require('./api/similar_notes');
const keysRoute = require('./api/keys');
const backendLogRoute = require('./api/backend_log');
const statsRoute = require('./api/stats');
const log = require('../services/log');
const express = require('express');
@ -280,6 +281,9 @@ function register(app) {
apiRoute(GET, '/api/backend-log', backendLogRoute.getBackendLog);
apiRoute(GET, '/api/stats/note-size/:noteId', statsRoute.getNoteSize);
apiRoute(GET, '/api/stats/subtree-size/:noteId', statsRoute.getSubtreeSize);
app.use('', router);
}