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  }