diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index 9aefe207e..18be6e444 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -32,6 +32,25 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func reindexTree(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + path := arg["path"].(string) + err := model.ReindexTree(path) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 5000} + return + } +} + func refreshFiletree(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 3c416a6f9..5e3f24e94 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -88,6 +88,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/filetree/heading2Doc", model.CheckAuth, model.CheckReadonly, heading2Doc) ginServer.Handle("POST", "/api/filetree/li2Doc", model.CheckAuth, model.CheckReadonly, li2Doc) ginServer.Handle("POST", "/api/filetree/refreshFiletree", model.CheckAuth, model.CheckReadonly, refreshFiletree) + ginServer.Handle("POST", "/api/filetree/reindexTree", model.CheckAuth, model.CheckReadonly, reindexTree) ginServer.Handle("POST", "/api/format/autoSpace", model.CheckAuth, model.CheckReadonly, autoSpace) ginServer.Handle("POST", "/api/format/netImg2LocalAssets", model.CheckAuth, model.CheckReadonly, netImg2LocalAssets) diff --git a/kernel/model/box.go b/kernel/model/box.go index 59c2d5209..ec77001cc 100644 --- a/kernel/model/box.go +++ b/kernel/model/box.go @@ -449,6 +449,19 @@ func parseKTree(kramdown []byte) (ret *parse.Tree) { return } +func ReindexTree(path string) (err error) { + luteEngine := NewLute() + tree, err := loadTree(path, luteEngine) + if nil != err { + return + } + + treenode.ReindexBlockTree(tree) + sql.UpsertTreeQueue(tree) + sql.WaitForWritingDatabase() + return +} + func RefreshFileTree() { WaitForWritingFiles()