mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-28 18:42:28 +08:00
47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
const notes = await api.runOnBackend(() => {
|
|
const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`);
|
|
const noteBlobIds = api.sql.getRows(`
|
|
SELECT
|
|
notes.noteId,
|
|
notes.blobId,
|
|
GROUP_CONCAT(revisions.blobId) AS revisions_blobIds,
|
|
GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds,
|
|
GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds
|
|
FROM
|
|
notes
|
|
LEFT JOIN revisions USING (noteId)
|
|
LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId
|
|
LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId
|
|
GROUP BY noteId`);
|
|
|
|
let noteSizes = [];
|
|
|
|
for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) {
|
|
const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId));
|
|
|
|
const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0);
|
|
const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0);
|
|
|
|
noteSizes.push({ noteId, size: totalLength });
|
|
}
|
|
|
|
noteSizes.sort((a, b) => a.size > b.size ? -1 : 1);
|
|
|
|
noteSizes = noteSizes.splice(0, 100);
|
|
|
|
return noteSizes;
|
|
});
|
|
|
|
const $statsTable = api.$container.find('.stats-table');
|
|
|
|
for (const note of notes) {
|
|
$statsTable.append(
|
|
$("<tr>")
|
|
.append(
|
|
$("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
|
|
)
|
|
.append(
|
|
$("<td nowrap>").text(note.size + " bytes")
|
|
)
|
|
);
|
|
} |