|
- package task
-
- import (
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/redis/redis_client"
- "code.gitea.io/gitea/modules/redis/redis_key"
- "encoding/json"
- "time"
- )
-
- //GetTaskConfig get task config from redis cache first
- // if not exist in redis, find in db and refresh the redis key
- func GetTaskConfig(taskType string) (*models.TaskConfig, error) {
- redisKey := redis_key.TaskConfig(taskType)
- configStr, _ := redis_client.Get(redisKey)
- if configStr != "" {
- if configStr == redis_key.EMPTY_REDIS_VAL {
- return nil, nil
- }
- config := new(models.TaskConfig)
- json.Unmarshal([]byte(configStr), config)
- return config, nil
- }
- config, err := models.GetTaskConfigByTaskCode(taskType)
- if err != nil {
- if models.IsErrRecordNotExist(err) {
- redis_client.Setex(redisKey, redis_key.EMPTY_REDIS_VAL, 5*time.Second)
- return nil, nil
- }
- return nil, err
- }
- jsonStr, _ := json.Marshal(config)
- redis_client.Setex(redisKey, string(jsonStr), 30*24*time.Hour)
- return config, nil
- }
|