diff --git a/kernel/api/router.go b/kernel/api/router.go index 3fc9feb00..984d944fa 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -148,6 +148,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/search/searchRefBlock", model.CheckAuth, searchRefBlock) ginServer.Handle("POST", "/api/search/searchEmbedBlock", model.CheckAuth, searchEmbedBlock) ginServer.Handle("POST", "/api/search/getEmbedBlock", model.CheckAuth, getEmbedBlock) + ginServer.Handle("POST", "/api/search/updateEmbedBlock", model.CheckAuth, updateEmbedBlock) ginServer.Handle("POST", "/api/search/fullTextSearchBlock", model.CheckAuth, fullTextSearchBlock) ginServer.Handle("POST", "/api/search/searchAsset", model.CheckAuth, searchAsset) ginServer.Handle("POST", "/api/search/findReplace", model.CheckAuth, findReplace) diff --git a/kernel/api/search.go b/kernel/api/search.go index 671f7646b..3e1e1cff7 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -218,6 +218,26 @@ func getEmbedBlock(c *gin.Context) { } } +func updateEmbedBlock(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + id := arg["id"].(string) + content := arg["content"].(string) + + err := model.UpdateEmbedBlock(id, content) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } +} + func searchEmbedBlock(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/index.go b/kernel/model/index.go index ca0780a74..e6fd62b37 100644 --- a/kernel/model/index.go +++ b/kernel/model/index.go @@ -217,7 +217,7 @@ func autoIndexEmbedBlock(embedBlocks []*sql.Block) { for i, embedBlock := range embedBlocks { md := strings.TrimSpace(embedBlock.Markdown) if strings.Contains(md, "//js") { - // js 嵌入块不支持自动索引 + // js 嵌入块不支持自动索引,由前端主动调用 /api/search/updateEmbedBlock 接口更新内容 https://github.com/siyuan-note/siyuan/issues/9736 continue } diff --git a/kernel/model/search.go b/kernel/model/search.go index caa8cc895..f0a4d379e 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -54,6 +54,28 @@ type EmbedBlock struct { BlockPaths []*BlockPath `json:"blockPaths"` } +func UpdateEmbedBlock(id, content string) (err error) { + bt := treenode.GetBlockTree(id) + if nil == bt { + err = ErrBlockNotFound + return + } + + if treenode.TypeAbbr(ast.NodeBlockQueryEmbed.String()) != bt.Type { + err = errors.New("not query embed block") + return + } + + embedBlock := &EmbedBlock{ + Block: &Block{ + Markdown: content, + }, + } + + updateEmbedBlockContent(id, []*EmbedBlock{embedBlock}) + return +} + func GetEmbedBlock(embedBlockID string, includeIDs []string, headingMode int, breadcrumb bool) (ret []*EmbedBlock) { return getEmbedBlock(embedBlockID, includeIDs, headingMode, breadcrumb) }