diff --git a/kernel/api/router.go b/kernel/api/router.go index fe82071cc..1c64a7601 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -135,6 +135,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/search/searchTag", model.CheckAuth, searchTag) ginServer.Handle("POST", "/api/search/searchTemplate", model.CheckAuth, searchTemplate) + ginServer.Handle("POST", "/api/search/removeTemplate", model.CheckAuth, removeTemplate) ginServer.Handle("POST", "/api/search/searchWidget", model.CheckAuth, searchWidget) ginServer.Handle("POST", "/api/search/searchRefBlock", model.CheckAuth, searchRefBlock) ginServer.Handle("POST", "/api/search/searchEmbedBlock", model.CheckAuth, searchEmbedBlock) diff --git a/kernel/api/search.go b/kernel/api/search.go index 6fdaeedc6..31a5877c7 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -108,6 +108,24 @@ func searchWidget(c *gin.Context) { } } +func removeTemplate(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.RemoveTemplate(path) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } +} + func searchTemplate(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/template.go b/kernel/model/template.go index 73d546d55..fb3d348b1 100644 --- a/kernel/model/template.go +++ b/kernel/model/template.go @@ -34,6 +34,7 @@ import ( "github.com/88250/lute/render" sprig "github.com/Masterminds/sprig/v3" "github.com/araddon/dateparse" + "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/search" "github.com/siyuan-note/siyuan/kernel/sql" @@ -57,6 +58,14 @@ func RenderGoTemplate(templateContent string) (ret string, err error) { return } +func RemoveTemplate(p string) (err error) { + err = filelock.Remove(p) + if nil != err { + logging.LogErrorf("remove template failed: %s", err) + } + return +} + func SearchTemplate(keyword string) (ret []*Block) { ret = []*Block{} @@ -145,7 +154,7 @@ func DocSaveAsTemplate(id string, overwrite bool) (code int, err error) { } } - err = os.WriteFile(savePath, md, 0644) + err = filelock.WriteFile(savePath, md) return }