浏览代码

:bug: The save path is incorrect when creating a sub-doc by ref in a doc with the same name https://github.com/siyuan-note/siyuan/issues/8138

Daniel 10 月之前
父节点
当前提交
5ad9de9541
共有 2 个文件被更改,包括 4 次插入4 次删除
  1. 2 2
      kernel/model/path.go
  2. 2 2
      kernel/treenode/blocktree.go

+ 2 - 2
kernel/model/path.go

@@ -45,8 +45,8 @@ func createDocsByHPath(boxID, hPath, content, parentID, id string) (retID string
 		// 在指定了父文档 ID 的情况下优先查找父文档
 		// 在指定了父文档 ID 的情况下优先查找父文档
 		parentHPath, name := path.Split(hPath)
 		parentHPath, name := path.Split(hPath)
 		parentHPath = strings.TrimSuffix(parentHPath, "/")
 		parentHPath = strings.TrimSuffix(parentHPath, "/")
-		preferredParent := treenode.GetBlockTreeRootByHPathPreferredParentID(boxID, parentHPath, parentID)
-		if nil != preferredParent && preferredParent.ID == parentID {
+		preferredParent := treenode.GetBlockTreeByHPathPreferredParentID(boxID, parentHPath, parentID)
+		if nil != preferredParent && preferredParent.RootID == parentID {
 			// 如果父文档存在且 ID 一致,则直接在父文档下创建
 			// 如果父文档存在且 ID 一致,则直接在父文档下创建
 			p := strings.TrimSuffix(preferredParent.Path, ".sy") + "/" + id + ".sy"
 			p := strings.TrimSuffix(preferredParent.Path, ".sy") + "/" + id + ".sy"
 			if _, err = createDoc(boxID, p, name, content); err != nil {
 			if _, err = createDoc(boxID, p, name, content); err != nil {

+ 2 - 2
kernel/treenode/blocktree.go

@@ -258,10 +258,10 @@ func GetBlockTreeRootsByHPath(boxID, hPath string) (ret []*BlockTree) {
 	return
 	return
 }
 }
 
 
-func GetBlockTreeRootByHPathPreferredParentID(boxID, hPath, preferredParentID string) (ret *BlockTree) {
+func GetBlockTreeByHPathPreferredParentID(boxID, hPath, preferredParentID string) (ret *BlockTree) {
 	hPath = gulu.Str.RemoveInvisible(hPath)
 	hPath = gulu.Str.RemoveInvisible(hPath)
 	var roots []*BlockTree
 	var roots []*BlockTree
-	sqlStmt := "SELECT * FROM blocktrees WHERE box_id = ? AND hpath = ? AND parent_id = ? AND type = 'd'"
+	sqlStmt := "SELECT * FROM blocktrees WHERE box_id = ? AND hpath = ? AND parent_id = ? LIMIT 1"
 	rows, err := db.Query(sqlStmt, boxID, hPath, preferredParentID)
 	rows, err := db.Query(sqlStmt, boxID, hPath, preferredParentID)
 	if err != nil {
 	if err != nil {
 		logging.LogErrorf("sql query [%s] failed: %s", sqlStmt, err)
 		logging.LogErrorf("sql query [%s] failed: %s", sqlStmt, err)