Browse Source

#1249

add task config edit api
tags/v1.22.9.2^2
chenyifan01 3 years ago
parent
commit
40f7620a34
6 changed files with 92 additions and 5 deletions
  1. +1
    -0
      models/limit_config.go
  2. +67
    -2
      models/task_config.go
  3. +0
    -3
      modules/redis/redis_key/task_redis_key.go
  4. +1
    -0
      routers/routes/routes.go
  5. +10
    -0
      routers/task/config.go
  6. +13
    -0
      services/task/task_config.go

+ 1
- 0
models/limit_config.go View File

@@ -53,6 +53,7 @@ type LimitConfig struct {
}

type LimitConfigVO struct {
Tittle string
RefreshRate string
Scope string
LimitNum int64


+ 67
- 2
models/task_config.go View File

@@ -54,10 +54,10 @@ type TaskConfig struct {
}

type TaskConfigWithLimit struct {
TaskCode string
TaskCode string `binding:"Required;MaxSize(256)"`
Tittle string
AwardType string
AwardAmount int64
AwardAmount int64 `binding:"Required;MaxSize(256)"`
Creator string
CreatedUnix timeutil.TimeStamp
Limiters []LimitConfigVO
@@ -90,3 +90,68 @@ func GetTaskConfigList() ([]*TaskConfig, error) {
}
return r, nil
}

func AddTaskConfig(config TaskConfigWithLimit, doer *User) error {
sess := x.NewSession()
defer sess.Close()

//delete old task config
p := &TaskConfig{
TaskCode: config.TaskCode,
}
_, err := sess.Delete(p)
if err != nil {
sess.Rollback()
return err
}

//add new config
t := &TaskConfig{
TaskCode: config.TaskCode,
Tittle: config.Tittle,
AwardType: config.AwardType,
AwardAmount: config.AwardAmount,
CreatorId: doer.ID,
CreatorName: doer.Name,
}
_, err = sess.Insert(t)
if err != nil {
sess.Rollback()
return err
}

//delete old limiter config
lp := &LimitConfig{
LimitType: LimitTypeTask.Name(),
LimitCode: config.TaskCode,
}
_, err = sess.Delete(lp)
if err != nil {
sess.Rollback()
return err
}

//add new limiter config
if config.Limiters != nil && len(config.Limiters) > 0 {
for _, v := range config.Limiters {
//add new config
l := &LimitConfig{
Tittle: v.Tittle,
RefreshRate: v.RefreshRate,
Scope: v.Scope,
LimitNum: v.LimitNum,
LimitCode: config.TaskCode,
LimitType: LimitTypeTask.Name(),
CreatorId: doer.ID,
CreatorName: doer.Name,
}
_, err = sess.Insert(l)
if err != nil {
sess.Rollback()
return err
}
}
}
sess.Commit()
return nil
}

+ 0
- 3
modules/redis/redis_key/task_redis_key.go View File

@@ -9,6 +9,3 @@ func TaskAccomplishLock(sourceId string, taskType string) string {
func TaskConfigList() string {
return KeyJoin(TASK_REDIS_PREFIX, "config", "list")
}
func TaskConfigWithLimiterList() string {
return KeyJoin(TASK_REDIS_PREFIX, "config", "limiter", "list")
}

+ 1
- 0
routers/routes/routes.go View File

@@ -1322,6 +1322,7 @@ func RegisterRoutes(m *macaron.Macaron) {

m.Group("/task/config", func() {
m.Get("/list", task.GetTaskConfigList)
m.Post("/add", bindIgnErr(models.TaskConfigWithLimit{}), task.AddTaskConfig)
}, reqSignIn)

if setting.API.EnableSwagger {


+ 10
- 0
routers/task/config.go View File

@@ -1,6 +1,7 @@
package task

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/routers/response"
"code.gitea.io/gitea/services/task"
@@ -15,3 +16,12 @@ func GetTaskConfigList(ctx *context.Context) {
}
ctx.JSON(http.StatusOK, response.SuccessWithData(r))
}

func AddTaskConfig(ctx *context.Context, config models.TaskConfigWithLimit) {
err := task.AddTaskConfig(config, ctx.User)
if err != nil {
ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
return
}
ctx.JSON(http.StatusOK, response.Success())
}

+ 13
- 0
services/task/task_config.go View File

@@ -2,6 +2,7 @@ package task

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/redis/redis_client"
"code.gitea.io/gitea/modules/redis/redis_key"
"code.gitea.io/gitea/services/reward/limiter"
@@ -76,6 +77,7 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
lj := l[j]
if lj.LimitCode == li.TaskCode {
lv = append(lv, models.LimitConfigVO{
Tittle: lj.Tittle,
RefreshRate: lj.RefreshRate,
Scope: lj.Scope,
LimitNum: lj.LimitNum,
@@ -89,3 +91,14 @@ func GetTaskConfigWithLimitList() ([]*models.TaskConfigWithLimit, error) {
}
return r, nil
}

func AddTaskConfig(config models.TaskConfigWithLimit, doer *models.User) error {
err := models.AddTaskConfig(config, doer)
if err != nil {
log.Error("add task config error,config:%v err:%v", config, err)
return err
}
redis_client.Del(redis_key.LimitConfig(models.LimitTypeTask))
redis_client.Del(redis_key.TaskConfigList())
return nil
}

Loading…
Cancel
Save