mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 14:40:12 +01:00
🎨 Improve rollback doc to avoid ID duplication https://github.com/siyuan-note/siyuan/issues/14358
This commit is contained in:
parent
d348ad0383
commit
6407791fbb
3 changed files with 25 additions and 16 deletions
|
|
@ -304,18 +304,7 @@ func RollbackDocHistory(boxID, historyPath string) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, nodeID := range duplicatedIDs {
|
for _, nodeID := range duplicatedIDs {
|
||||||
node := nodes[nodeID]
|
treenode.ResetNodeID(nodes[nodeID])
|
||||||
node.ID = ast.NewNodeID()
|
|
||||||
node.SetIALAttr("id", node.ID)
|
|
||||||
created := util.TimeFromID(node.ID)
|
|
||||||
updated := node.IALAttr("updated")
|
|
||||||
if "" == updated {
|
|
||||||
updated = created
|
|
||||||
}
|
|
||||||
if updated < created {
|
|
||||||
updated = created
|
|
||||||
}
|
|
||||||
node.SetIALAttr("updated", updated)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 仅重新索引该文档,不进行全量索引
|
// 仅重新索引该文档,不进行全量索引
|
||||||
|
|
|
||||||
|
|
@ -204,8 +204,7 @@ func resetDuplicateBlocksOnFileSys() {
|
||||||
|
|
||||||
if "" == n.ID {
|
if "" == n.ID {
|
||||||
needOverwrite = true
|
needOverwrite = true
|
||||||
n.ID = ast.NewNodeID()
|
treenode.ResetNodeID(n)
|
||||||
n.SetIALAttr("id", n.ID)
|
|
||||||
return ast.WalkContinue
|
return ast.WalkContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -225,8 +224,7 @@ func resetDuplicateBlocksOnFileSys() {
|
||||||
|
|
||||||
// 其他情况,重置节点 ID
|
// 其他情况,重置节点 ID
|
||||||
needOverwrite = true
|
needOverwrite = true
|
||||||
n.ID = ast.NewNodeID()
|
treenode.ResetNodeID(n)
|
||||||
n.SetIALAttr("id", n.ID)
|
|
||||||
needRefreshUI = true
|
needRefreshUI = true
|
||||||
return ast.WalkContinue
|
return ast.WalkContinue
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,28 @@ import (
|
||||||
"github.com/siyuan-note/siyuan/kernel/util"
|
"github.com/siyuan-note/siyuan/kernel/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func ResetNodeID(node *ast.Node) {
|
||||||
|
if nil == node {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
node.ID = ast.NewNodeID()
|
||||||
|
node.SetIALAttr("id", node.ID)
|
||||||
|
resetUpdatedByID(node)
|
||||||
|
}
|
||||||
|
|
||||||
|
func resetUpdatedByID(node *ast.Node) {
|
||||||
|
created := util.TimeFromID(node.ID)
|
||||||
|
updated := node.IALAttr("updated")
|
||||||
|
if "" == updated {
|
||||||
|
updated = created
|
||||||
|
}
|
||||||
|
if updated < created {
|
||||||
|
updated = created
|
||||||
|
}
|
||||||
|
node.SetIALAttr("updated", updated)
|
||||||
|
}
|
||||||
|
|
||||||
func GetEmbedBlockRef(embedNode *ast.Node) (blockRefID string) {
|
func GetEmbedBlockRef(embedNode *ast.Node) (blockRefID string) {
|
||||||
if nil == embedNode || ast.NodeBlockQueryEmbed != embedNode.Type {
|
if nil == embedNode || ast.NodeBlockQueryEmbed != embedNode.Type {
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue