fix for clones & optimizations

This commit is contained in:
azivner 2018-04-16 23:34:56 -04:00
parent b4005a7ffe
commit 85a9748291
3 changed files with 14 additions and 11 deletions

View file

@ -36,20 +36,20 @@ class NoteShort {
return await this.treeCache.getBranches(branchIds);
}
async __getNotes(noteIds) {
if (!noteIds) {
return [];
}
return this.treeCache.getNotes(noteIds);
getParentNoteIds() {
return this.treeCache.parents[this.noteId] || [];
}
async getParentNotes() {
return this.__getNotes(this.treeCache.parents[this.noteId]);
return await this.treeCache.getNotes(this.getParentNoteIds());
}
getChildNoteIds() {
return this.treeCache.children[this.noteId] || [];
}
async getChildNotes() {
return this.__getNotes(this.treeCache.children[this.noteId]);
return await this.treeCache.getNotes(this.getChildNoteIds());
}
get toString() {

View file

@ -94,7 +94,7 @@ async function getExtraClasses(note) {
extraClasses.push("protected");
}
if ((await note.getParentNotes()).length > 1) {
if (note.getParentNoteIds().length > 1) {
extraClasses.push("multiple-parents");
}

View file

@ -19,12 +19,15 @@ async function getNotes(noteIds) {
async function getRelations(noteIds) {
const questionMarks = noteIds.map(() => "?").join(",");
const doubledNoteIds = noteIds.concat(noteIds);
return await sql.getRows(`SELECT branchId, noteId AS 'childNoteId', parentNoteId FROM branches WHERE isDeleted = 0
AND parentNoteId IN (${questionMarks})`, noteIds);
AND (parentNoteId IN (${questionMarks}) OR noteId IN (${questionMarks}))`, doubledNoteIds);
}
async function getTree() {
// we fetch all branches of notes, even if that particular branch isn't visible
// this allows us to e.g. detect and properly display clones
const branches = await sql.getRows(`
WITH RECURSIVE
tree(branchId, noteId, isExpanded) AS (
@ -34,7 +37,7 @@ async function getTree() {
JOIN tree ON branches.parentNoteId = tree.noteId
WHERE tree.isExpanded = 1 AND branches.isDeleted = 0
)
SELECT branches.* FROM tree JOIN branches USING(branchId);`);
SELECT branches.* FROM tree JOIN branches USING(noteId)`);
const noteIds = branches.map(b => b.noteId);