From b238a5de410c4ef1638e374c1f85116fef15597b Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 29 Sep 2022 12:38:48 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E5=8F=8D=E9=93=BE=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/ref.go | 4 ++-- kernel/model/backlink.go | 16 ++++++++++------ kernel/sql/block_ref_query.go | 15 --------------- 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/kernel/api/ref.go b/kernel/api/ref.go index aca6820cd..89c2df0fe 100644 --- a/kernel/api/ref.go +++ b/kernel/api/ref.go @@ -49,9 +49,9 @@ func getBacklinkDoc(c *gin.Context) { defID := arg["defID"].(string) refTreeID := arg["refTreeID"].(string) - blocks := model.GetBacklinkDoc(defID, refTreeID) + doms := model.GetBacklinkDoc(defID, refTreeID) ret.Data = map[string]interface{}{ - "blocks": blocks, + "doms": doms, } } diff --git a/kernel/model/backlink.go b/kernel/model/backlink.go index 61a85eefb..9ae12bd66 100644 --- a/kernel/model/backlink.go +++ b/kernel/model/backlink.go @@ -158,7 +158,7 @@ OK: return } -func GetBacklinkDoc(defID, refTreeID string) (ret []*Block) { +func GetBacklinkDoc(defID, refTreeID string) (ret []string) { keyword := "" beforeLen := 12 sqlBlock := sql.GetBlock(defID) @@ -168,7 +168,13 @@ func GetBacklinkDoc(defID, refTreeID string) (ret []*Block) { rootID := sqlBlock.RootID var links []*Block - refs := sql.QueryRefsByDefIDRefRootID(defID, refTreeID) + tmpRefs := sql.QueryRefsByDefID(defID, true) + var refs []*sql.Ref + for _, ref := range tmpRefs { + if ref.RootID == refTreeID { + refs = append(refs, ref) + } + } refs = removeDuplicatedRefs(refs) // 同一个块中引用多个相同块时反链去重 https://github.com/siyuan-note/siyuan/issues/3317 // 为了减少查询,组装好 IDs 后一次查出 @@ -271,10 +277,8 @@ func GetBacklinkDoc(defID, refTreeID string) (ret []*Block) { for _, link := range linkPaths { for _, c := range link.Children { n := treenode.GetNodeInTree(refTree, c.ID) - b := &Block{ - Content: lute.RenderNodeBlockDOM(n, luteEngine.ParseOptions, luteEngine.RenderOptions), - } - ret = append(ret, b) + dom := lute.RenderNodeBlockDOM(n, luteEngine.ParseOptions, luteEngine.RenderOptions) + ret = append(ret, dom) } } return diff --git a/kernel/sql/block_ref_query.go b/kernel/sql/block_ref_query.go index 591ee717c..9d7d3425b 100644 --- a/kernel/sql/block_ref_query.go +++ b/kernel/sql/block_ref_query.go @@ -343,21 +343,6 @@ func QueryRefsByDefID(defBlockID string, containChildren bool) (ret []*Ref) { return } -func QueryRefsByDefIDRefRootID(defBlockID, refRootBlockID string) (ret []*Ref) { - stmt := "SELECT * FROM refs WHERE def_block_id = ? AND root_id = ?" - rows, err := query(stmt, defBlockID, refRootBlockID) - if nil != err { - logging.LogErrorf("sql query failed: %s", err) - return - } - defer rows.Close() - for rows.Next() { - ref := scanRefRows(rows) - ret = append(ret, ref) - } - return -} - func QueryRefsByDefIDRefID(defBlockID, refBlockID string) (ret []*Ref) { stmt := "SELECT * FROM refs WHERE def_block_id = ? AND block_id = ?" rows, err := query(stmt, defBlockID, refBlockID)