修复4位版本号导致无法自动升级SQL的问题

This commit is contained in:
GoEdgeLab
2024-04-14 11:47:10 +08:00
parent 2f67f2fa6f
commit 22ef633158
5 changed files with 33 additions and 13 deletions

View File

@@ -21,7 +21,4 @@ const (
// 其他节点版本号,用来检测是否有需要升级的节点 // 其他节点版本号,用来检测是否有需要升级的节点
NodeVersion = "1.3.4.2" NodeVersion = "1.3.4.2"
// SQLVersion SQL版本号
SQLVersion = "12"
) )

View File

@@ -25,7 +25,6 @@ import (
"github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/logs"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types" "github.com/iwind/TeaGo/types"
stringutil "github.com/iwind/TeaGo/utils/string"
"github.com/iwind/gosock/pkg/gosock" "github.com/iwind/gosock/pkg/gosock"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials"
@@ -381,7 +380,7 @@ func (this *APINode) autoUpgrade() error {
if one != nil { if one != nil {
// 如果是同样的版本,则直接认为是最新版本 // 如果是同样的版本,则直接认为是最新版本
var version = one.GetString("version") var version = one.GetString("version")
if stringutil.VersionCompare(version, setup.ComposeSQLVersion()) >= 0 { if setup.CompareVersion(version, setup.ComposeSQLVersion()) >= 0 {
return nil return nil
} }
} }

View File

@@ -16,7 +16,6 @@ import (
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/rands" "github.com/iwind/TeaGo/rands"
"github.com/iwind/TeaGo/types" "github.com/iwind/TeaGo/types"
stringutil "github.com/iwind/TeaGo/utils/string"
"strconv" "strconv"
"strings" "strings"
) )
@@ -116,10 +115,10 @@ func UpgradeSQLData(db *dbs.DB) error {
if err != nil { if err != nil {
return err return err
} }
versionString := types.String(version) var versionString = types.String(version)
if len(versionString) > 0 { if len(versionString) > 0 {
for _, f := range upgradeFuncs { for _, f := range upgradeFuncs {
if stringutil.VersionCompare(versionString, f.version) >= 0 { if CompareVersion(versionString, f.version) >= 0 {
continue continue
} }
err = f.f(db) err = f.f(db)

View File

@@ -4,17 +4,31 @@ package setup
import ( import (
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/iwind/TeaGo/types"
stringutil "github.com/iwind/TeaGo/utils/string"
"strings" "strings"
) )
// ComposeSQLVersion 组合SQL的版本号
func ComposeSQLVersion() string { func ComposeSQLVersion() string {
var version = teaconst.Version return teaconst.Version
if len(teaconst.SQLVersion) == 0 {
return version
} }
if strings.Count(version, ".") <= 2 { // CompareVersion 对比版本
return version + "." + teaconst.SQLVersion func CompareVersion(version1 string, version2 string) int8 {
if len(version1) == 0 || len(version2) == 0 {
return 0
}
return stringutil.VersionCompare(fixVersion(version1), fixVersion(version2))
}
func fixVersion(version string) string {
var pieces = strings.Split(version, ".")
var lastPiece = types.Int(pieces[len(pieces)-1])
if lastPiece > 10 {
// 这个是以前使用的SQL版本号我们给去掉
version = strings.Join(pieces[:len(pieces)-1], ".")
} }
return version return version
} }

View File

@@ -4,9 +4,20 @@ package setup_test
import ( import (
"github.com/TeaOSLab/EdgeAPI/internal/setup" "github.com/TeaOSLab/EdgeAPI/internal/setup"
"github.com/iwind/TeaGo/assert"
"testing" "testing"
) )
func TestComposeSQLVersion(t *testing.T) { func TestComposeSQLVersion(t *testing.T) {
t.Log(setup.ComposeSQLVersion()) t.Log(setup.ComposeSQLVersion())
} }
func TestCompareVersion(t *testing.T) {
var a = assert.NewAssertion(t)
a.IsTrue(setup.CompareVersion("1.3.4", "1.3.4") == 0)
a.IsTrue(setup.CompareVersion("1.3.4", "1.3.3") > 0)
a.IsTrue(setup.CompareVersion("1.3.4", "1.3.5") < 0)
a.IsTrue(setup.CompareVersion("1.3.4.3", "1.3.4.12") > 0) // because 12 > 10
a.IsTrue(setup.CompareVersion("1.3.4.3", "1.3.4.2") > 0)
a.IsTrue(setup.CompareVersion("1.3.4.3", "1.3.4.4") < 0)
}