修复自动生成的用户没有绑定集群、用户名不规范的问题

This commit is contained in:
GoEdgeLab
2023-07-02 14:30:46 +08:00
parent 9cf7e6c564
commit 783f0c21ab
2 changed files with 53 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ import (
"github.com/iwind/TeaGo/rands"
"github.com/iwind/TeaGo/types"
stringutil "github.com/iwind/TeaGo/utils/string"
"strings"
)
type upgradeVersion struct {
@@ -91,6 +92,9 @@ var upgradeFuncs = []*upgradeVersion{
{
"0.5.8", upgradeV0_5_8,
},
{
"1.2.1", upgradeV1_2_1,
},
}
// UpgradeSQLData 升级SQL数据
@@ -719,3 +723,32 @@ func upgradeV0_4_11(db *dbs.DB) error {
return nil
}
// v1.2.1
func upgradeV1_2_1(db *dbs.DB) error {
// upgrade generated USER-xxx in old versions
ones, _, err := db.FindOnes("SELECT id, username, clusterId FROM edgeUsers WHERE username LIKE 'USER-%'")
if err != nil {
return err
}
for _, one := range ones {
var userId = one.GetInt64("id")
var clusterId = one.GetInt64("clusterId")
var username = one.GetString("username")
if clusterId <= 0 {
defaultClusterIdValue, err := db.FindCol(0, "SELECT id FROM edgeNodeClusters WHERE state=1 ORDER BY id ASC LIMIT 1")
if err != nil {
return err
}
var defaultClusterId = types.Int64(defaultClusterIdValue)
if defaultClusterId > 0 {
_, err = db.Exec("UPDATE edgeUsers SET username=?, clusterId=? WHERE id=?", strings.ReplaceAll(username, "-", "_"), defaultClusterId, userId)
if err != nil {
return err
}
}
}
}
return nil
}

View File

@@ -252,3 +252,23 @@ func TestUpgradeSQLData_v0_5_3(t *testing.T) {
t.Log("ok")
}
func TestUpgradeSQLData_v1_2_1(t *testing.T) {
db, err := dbs.NewInstanceFromConfig(&dbs.DBConfig{
Driver: "mysql",
Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&timeout=30s",
Prefix: "edge",
})
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV1_2_1(db)
if err != nil {
t.Fatal(err)
}
t.Log("ok")
}