🎨 Add internal kernel API /api/search/updateEmbedBlock https://github.com/siyuan-note/siyuan/issues/9736

This commit is contained in:
Daniel 2023-11-24 17:37:34 +08:00
parent 47df3f8b3d
commit 4a8c32f649
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
4 changed files with 44 additions and 1 deletions

View file

@ -148,6 +148,7 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/search/searchRefBlock", model.CheckAuth, searchRefBlock) ginServer.Handle("POST", "/api/search/searchRefBlock", model.CheckAuth, searchRefBlock)
ginServer.Handle("POST", "/api/search/searchEmbedBlock", model.CheckAuth, searchEmbedBlock) ginServer.Handle("POST", "/api/search/searchEmbedBlock", model.CheckAuth, searchEmbedBlock)
ginServer.Handle("POST", "/api/search/getEmbedBlock", model.CheckAuth, getEmbedBlock) 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/fullTextSearchBlock", model.CheckAuth, fullTextSearchBlock)
ginServer.Handle("POST", "/api/search/searchAsset", model.CheckAuth, searchAsset) ginServer.Handle("POST", "/api/search/searchAsset", model.CheckAuth, searchAsset)
ginServer.Handle("POST", "/api/search/findReplace", model.CheckAuth, findReplace) ginServer.Handle("POST", "/api/search/findReplace", model.CheckAuth, findReplace)

View file

@ -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) { func searchEmbedBlock(c *gin.Context) {
ret := gulu.Ret.NewResult() ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret) defer c.JSON(http.StatusOK, ret)

View file

@ -217,7 +217,7 @@ func autoIndexEmbedBlock(embedBlocks []*sql.Block) {
for i, embedBlock := range embedBlocks { for i, embedBlock := range embedBlocks {
md := strings.TrimSpace(embedBlock.Markdown) md := strings.TrimSpace(embedBlock.Markdown)
if strings.Contains(md, "//js") { if strings.Contains(md, "//js") {
// js 嵌入块不支持自动索引 // js 嵌入块不支持自动索引,由前端主动调用 /api/search/updateEmbedBlock 接口更新内容 https://github.com/siyuan-note/siyuan/issues/9736
continue continue
} }

View file

@ -54,6 +54,28 @@ type EmbedBlock struct {
BlockPaths []*BlockPath `json:"blockPaths"` 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) { func GetEmbedBlock(embedBlockID string, includeIDs []string, headingMode int, breadcrumb bool) (ret []*EmbedBlock) {
return getEmbedBlock(embedBlockID, includeIDs, headingMode, breadcrumb) return getEmbedBlock(embedBlockID, includeIDs, headingMode, breadcrumb)
} }