fix attribute loading CTE + don't duplicate attributes in case of cloning, fixes #735

This commit is contained in:
zadam 2019-12-02 20:10:10 +01:00
parent 9cb8bc5dd8
commit 2595c3ac31

View File

@ -349,9 +349,9 @@ class Note extends Entity {
tree(noteId, level) AS ( tree(noteId, level) AS (
SELECT ?, 0 SELECT ?, 0
UNION UNION
SELECT branches.noteId, tree.level + 1 SELECT branches.parentNoteId, tree.level + 1
FROM branches FROM branches
JOIN tree ON branches.parentNoteId = tree.noteId JOIN tree ON branches.noteId = tree.noteId
WHERE branches.isDeleted = 0 WHERE branches.isDeleted = 0
), ),
treeWithAttrs(noteId, level) AS ( treeWithAttrs(noteId, level) AS (
@ -371,6 +371,11 @@ class Note extends Entity {
// we order by noteId so that attributes from same note stay together. Actual noteId ordering doesn't matter. // we order by noteId so that attributes from same note stay together. Actual noteId ordering doesn't matter.
const filteredAttributes = attributes.filter((attr, index) => { const filteredAttributes = attributes.filter((attr, index) => {
// if this exact attribute already appears then don't include it (can happen via cloning)
if (attributes.findIndex(it => it.attributeId === attr.attributeId) !== index) {
return false;
}
if (attr.isDefinition()) { if (attr.isDefinition()) {
const firstDefinitionIndex = attributes.findIndex(el => el.type === attr.type && el.name === attr.name); const firstDefinitionIndex = attributes.findIndex(el => el.type === attr.type && el.name === attr.name);