修复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

@@ -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)
}