فهرست منبع

:art: 增加批量移除本地 kv 存储接口

Liang Ding 2 سال پیش
والد
کامیت
a5d0a6afae
3فایلهای تغییر یافته به همراه35 افزوده شده و 3 حذف شده
  1. 1 0
      kernel/api/router.go
  2. 30 1
      kernel/api/storage.go
  3. 4 2
      kernel/model/storage.go

+ 1 - 0
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)

+ 30 - 1
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()

+ 4 - 2
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)
 }