diff --git a/kernel/api/router.go b/kernel/api/router.go index c380dc70f..82bed79e7 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -60,6 +60,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/storage/removeLocalStorageVal", model.CheckAuth, removeLocalStorageVal) ginServer.Handle("POST", "/api/storage/setCriterion", model.CheckAuth, setCriterion) ginServer.Handle("POST", "/api/storage/getCriteria", model.CheckAuth, getCriteria) + ginServer.Handle("POST", "/api/storage/removeCriterion", model.CheckAuth, removeCriterion) ginServer.Handle("POST", "/api/account/login", model.CheckAuth, login) ginServer.Handle("POST", "/api/account/checkActivationcode", model.CheckAuth, checkActivationcode) diff --git a/kernel/api/storage.go b/kernel/api/storage.go index a2384225a..52bc177f0 100644 --- a/kernel/api/storage.go +++ b/kernel/api/storage.go @@ -25,6 +25,24 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func removeCriterion(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + name := arg["name"].(string) + err := model.RemoveCriterion(name) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } +} + func setCriterion(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/storage.go b/kernel/model/storage.go index 911fd79ed..f9478b3a4 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -59,6 +59,26 @@ type CriterionTypes struct { var criteriaLock = sync.Mutex{} +func RemoveCriterion(name string) (err error) { + criteriaLock.Lock() + defer criteriaLock.Unlock() + + criteria, err := getCriteria() + if nil != err { + return + } + + for i, c := range criteria { + if c.Name == name { + criteria = append(criteria[:i], criteria[i+1:]...) + break + } + } + + err = setCriteria(criteria) + return +} + func SetCriterion(criterion *Criterion) (err error) { criteriaLock.Lock() defer criteriaLock.Unlock()