From a5d0a6afae427779defcc8850a3c1fead61b50dc Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 22 Mar 2023 15:21:23 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9C=AC=E5=9C=B0=20kv=20=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/api/router.go | 1 + kernel/api/storage.go | 31 ++++++++++++++++++++++++++++++- kernel/model/storage.go | 6 ++++-- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/kernel/api/router.go b/kernel/api/router.go index 13b809899..221e32a87 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -61,6 +61,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/storage/getLocalStorage", model.CheckAuth, getLocalStorage) ginServer.Handle("POST", "/api/storage/setLocalStorageVal", model.CheckAuth, setLocalStorageVal) ginServer.Handle("POST", "/api/storage/removeLocalStorageVal", model.CheckAuth, model.CheckReadonly, removeLocalStorageVal) + ginServer.Handle("POST", "/api/storage/removeLocalStorageVals", model.CheckAuth, model.CheckReadonly, removeLocalStorageVals) ginServer.Handle("POST", "/api/storage/setCriterion", model.CheckAuth, model.CheckReadonly, setCriterion) ginServer.Handle("POST", "/api/storage/getCriteria", model.CheckAuth, getCriteria) ginServer.Handle("POST", "/api/storage/removeCriterion", model.CheckAuth, model.CheckReadonly, removeCriterion) diff --git a/kernel/api/storage.go b/kernel/api/storage.go index eba738a41..8e47cda2a 100644 --- a/kernel/api/storage.go +++ b/kernel/api/storage.go @@ -95,6 +95,35 @@ func getCriteria(c *gin.Context) { ret.Data = data } +func removeLocalStorageVals(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + var keys []string + keysArg := arg["keys"].([]interface{}) + for _, key := range keysArg { + keys = append(keys, key.(string)) + } + + err := model.RemoveLocalStorageVals(keys) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + return + } + + app := arg["app"].(string) + evt := util.NewCmdResult("removeLocalStorageVal", 0, util.PushModeBroadcastMainExcludeSelfApp) + evt.AppId = app + evt.Data = map[string]interface{}{"keys": keys} + util.PushEvent(evt) +} + func removeLocalStorageVal(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) @@ -105,7 +134,7 @@ func removeLocalStorageVal(c *gin.Context) { } key := arg["key"].(string) - err := model.RemoveLocalStorageVal(key) + err := model.RemoveLocalStorageVals([]string{key}) if nil != err { ret.Code = -1 ret.Msg = err.Error() diff --git a/kernel/model/storage.go b/kernel/model/storage.go index 8b91f4c50..9371c9f8e 100644 --- a/kernel/model/storage.go +++ b/kernel/model/storage.go @@ -286,7 +286,7 @@ func getCriteria() (ret []*Criterion, err error) { var localStorageLock = sync.Mutex{} -func RemoveLocalStorageVal(key string) (err error) { +func RemoveLocalStorageVals(keys []string) (err error) { localStorageLock.Lock() defer localStorageLock.Unlock() @@ -295,7 +295,9 @@ func RemoveLocalStorageVal(key string) (err error) { return } - delete(localStorage, key) + for _, key := range keys { + delete(localStorage, key) + } return setLocalStorage(localStorage) }