修复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"
// SQLVersion SQL版本号
SQLVersion = "12"
)

View File

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

View File

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

View File

@@ -4,17 +4,31 @@ package setup
import (
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/iwind/TeaGo/types"
stringutil "github.com/iwind/TeaGo/utils/string"
"strings"
)
// ComposeSQLVersion 组合SQL的版本号
func ComposeSQLVersion() string {
var version = teaconst.Version
if len(teaconst.SQLVersion) == 0 {
return version
return teaconst.Version
}
// CompareVersion 对比版本
func CompareVersion(version1 string, version2 string) int8 {
if len(version1) == 0 || len(version2) == 0 {
return 0
}
if strings.Count(version, ".") <= 2 {
return version + "." + teaconst.SQLVersion
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
}

View File

@@ -4,9 +4,20 @@ package setup_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/setup"
"github.com/iwind/TeaGo/assert"
"testing"
)
func TestComposeSQLVersion(t *testing.T) {
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)
}