github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/models/scripts/upgrade.go (about) 1 package scripts 2 3 import ( 4 "context" 5 model "github.com/cloudreve/Cloudreve/v3/models" 6 "github.com/cloudreve/Cloudreve/v3/pkg/util" 7 "strconv" 8 ) 9 10 type UpgradeTo340 int 11 12 // Run upgrade from older version to 3.4.0 13 func (script UpgradeTo340) Run(ctx context.Context) { 14 // 取回老版本 aria2 设定 15 old := model.GetSettingByType([]string{"aria2"}) 16 if len(old) == 0 { 17 return 18 } 19 20 // 写入到新版本的节点设定 21 n, err := model.GetNodeByID(1) 22 if err != nil { 23 util.Log().Error("找不到主机节点, %s", err) 24 } 25 26 n.Aria2Enabled = old["aria2_rpcurl"] != "" 27 n.Aria2OptionsSerialized.Options = old["aria2_options"] 28 n.Aria2OptionsSerialized.Server = old["aria2_rpcurl"] 29 30 interval, err := strconv.Atoi(old["aria2_interval"]) 31 if err != nil { 32 interval = 10 33 } 34 n.Aria2OptionsSerialized.Interval = interval 35 n.Aria2OptionsSerialized.TempPath = old["aria2_temp_path"] 36 n.Aria2OptionsSerialized.Token = old["aria2_token"] 37 if err := model.DB.Save(&n).Error; err != nil { 38 util.Log().Error("无法保存主机节点 Aria2 配置信息, %s", err) 39 } else { 40 model.DB.Where("type = ?", "aria2").Delete(model.Setting{}) 41 util.Log().Info("Aria2 配置信息已成功迁移至 3.4.0+ 版本的模式") 42 } 43 }