package setup import ( "encoding/json" "sync" "time" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs" ) var ( sharedUpgradeConfig *systemconfigs.UpgradeConfig sharedUpgradeConfigTime time.Time sharedUpgradeConfigMu sync.Mutex ) const upgradeConfigTTL = 5 * time.Minute // LoadUpgradeConfig 读取升级配置(带5分钟内存缓存) func LoadUpgradeConfig() (*systemconfigs.UpgradeConfig, error) { sharedUpgradeConfigMu.Lock() defer sharedUpgradeConfigMu.Unlock() if sharedUpgradeConfig != nil && time.Since(sharedUpgradeConfigTime) < upgradeConfigTTL { return sharedUpgradeConfig, nil } valueJSON, err := models.SharedSysSettingDAO.ReadSetting(nil, systemconfigs.SettingCodeUpgradeConfig) if err != nil { return nil, err } config := systemconfigs.NewUpgradeConfig() if len(valueJSON) > 0 { err = json.Unmarshal(valueJSON, config) if err != nil { return config, nil } } sharedUpgradeConfig = config sharedUpgradeConfigTime = time.Now() return config, nil }