package controller import ( "dypid/db" "dypid/global" "net/http" "github.com/gin-gonic/gin" ) func ListTokenHandler(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"result": db.ListToken()}) } func CreateTokenHandler(c *gin.Context) { //解析输入数据 input := struct { Token string `form:"token" binding:"required"` DedupObject string `form:"dedup_object" binding:"required"` DataFormat string `form:"data_format" binding:"required"` Notes string `form:"notes" binding:"required"` }{} if err := c.ShouldBindQuery(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "参数不能为空 " + err.Error()}) return } //创建Token err := db.CreateToken(input.Token, input.DedupObject, input.DataFormat, input.Notes) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } //返回 c.JSON(http.StatusOK, gin.H{"result": "ok"}) } func UpdateTokenHandler(c *gin.Context) { input := struct { Token string `form:"token" binding:"required"` DedupObject string `form:"dedup_object" binding:"required"` DataFormat string `form:"data_format" binding:"required"` Notes string `form:"notes" binding:"required"` }{} if err := c.ShouldBindQuery(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "参数不能为空 " + err.Error()}) return } err := db.UpdateToken(input.Token, input.DedupObject, input.DataFormat, input.Notes) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"result": "ok"}) } func DeleteTokenHandler(c *gin.Context) { input := struct { Token string `form:"token" binding:"required"` }{} if err := c.ShouldBindQuery(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "参数不能为空 " + err.Error()}) return } err := db.DeleteToken(input.Token) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"result": "ok"}) } func GetTokenInfoHandler(c *gin.Context) { input := struct { Token string `form:"token" binding:"required"` }{} if err := c.ShouldBindQuery(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Token不能为空"}) return } dedupObject, err := db.GetDedupObject(input.Token) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "获取去重对象失败 " + err.Error()}) return } dataFormat, err := db.GetDataFormat(input.Token) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "获取数据格式失败 " + err.Error()}) return } output := struct { Token string `json:"token"` DedupObject string `json:"dedup_object"` DataFormat string `json:"data_format"` DedupItemsNumber int64 `json:"dedup_items_number"` CacheListNumber int64 `json:"cache_list_number"` }{} output.Token = input.Token output.DedupObject = dedupObject output.DataFormat = dataFormat output.DedupItemsNumber = global.RDB.BFCard(global.RCtx, "dedup:"+input.Token+":"+dedupObject).Val() output.CacheListNumber = global.RDB.LLen(global.RCtx, "list:"+input.Token).Val() c.JSON(http.StatusOK, gin.H{"result": output}) } func DeleteTokenInfoHandler(c *gin.Context) { //解析输入数据 input := struct { Token string `form:"token" binding:"required"` DedupBF bool `form:"dedup_bf"` CacheList bool `form:"cache_list"` }{} if err := c.ShouldBindQuery(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Token不能为空"}) return } //检查token是否存在 _, err := db.GetDedupObject(input.Token) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Token不存在" + err.Error()}) return } //删除去重对象 if input.DedupBF { keys := global.RDB.Keys(global.RCtx, "dedup:"+input.Token+":*").Val() global.RDB.Del(global.RCtx, keys...) } if input.CacheList { global.RDB.Del(global.RCtx, "list:"+input.Token) } //输出信息 c.JSON(http.StatusOK, gin.H{"result": "ok"}) }