|
- package models
-
- import (
- "code.gitea.io/gitea/modules/timeutil"
- )
-
- const (
- PeriodNotCycle = "NOT_CYCLE"
- PeriodDaily = "DAILY"
- )
-
- //PointTaskConfig Only add and delete are allowed, edit is not allowed
- //so if you want to edit config for some task code,please delete first and add new one
- type TaskConfig struct {
- ID int64 `xorm:"pk autoincr"`
- TaskCode string `xorm:"NOT NULL"`
- Tittle string
- AwardType string `xorm:"NOT NULL"`
- AwardAmount int64 `xorm:"NOT NULL"`
- CreatorId int64 `xorm:"NOT NULL"`
- CreatorName string
- CreatedUnix timeutil.TimeStamp `xorm:"created"`
- DeletedAt timeutil.TimeStamp `xorm:"deleted"`
- }
-
- type TaskConfigWithLimit struct {
- TaskCode string `binding:"Required;MaxSize(256)"`
- Tittle string
- AwardType string
- AwardAmount int64 `binding:"Required;MaxSize(256)"`
- Creator string
- CreatedUnix timeutil.TimeStamp
- Limiters []*LimitConfigVO
- }
- type BatchLimitConfigVO struct {
- ConfigList []TaskConfigWithLimit
- }
-
- func getTaskConfig(t *TaskConfig) (*TaskConfig, error) {
- has, err := x.Get(t)
- if err != nil {
- return nil, err
- } else if !has {
- return nil, ErrRecordNotExist{}
- }
- return t, nil
- }
-
- func GetTaskConfigByTaskCode(taskCode string) (*TaskConfig, error) {
- t := &TaskConfig{
- TaskCode: taskCode,
- }
- return getTaskConfig(t)
- }
- func GetTaskConfigList() ([]*TaskConfig, error) {
- r := make([]*TaskConfig, 0)
- err := x.Find(&r)
- if err != nil {
- return nil, err
- }
- if len(r) == 0 {
- return nil, ErrRecordNotExist{}
- }
- 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
- }
|