From 22ef633158891c3830ca9940c781ef769f66a3e2 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sun, 14 Apr 2024 11:47:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D4=E4=BD=8D=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8D=87=E7=BA=A7SQL=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/const/const.go | 3 --- internal/nodes/api_node.go | 3 +-- internal/setup/sql_upgrade.go | 5 ++--- internal/setup/utils.go | 24 +++++++++++++++++++----- internal/setup/utils_test.go | 11 +++++++++++ 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/internal/const/const.go b/internal/const/const.go index 8eda2517..88a3548b 100644 --- a/internal/const/const.go +++ b/internal/const/const.go @@ -21,7 +21,4 @@ const ( // 其他节点版本号,用来检测是否有需要升级的节点 NodeVersion = "1.3.4.2" - - // SQLVersion SQL版本号 - SQLVersion = "12" ) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 0e05dbf1..54616fbe 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -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 } } diff --git a/internal/setup/sql_upgrade.go b/internal/setup/sql_upgrade.go index d8e91cb1..8a43bfc2 100644 --- a/internal/setup/sql_upgrade.go +++ b/internal/setup/sql_upgrade.go @@ -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) diff --git a/internal/setup/utils.go b/internal/setup/utils.go index c79f4da5..b8cd7837 100644 --- a/internal/setup/utils.go +++ b/internal/setup/utils.go @@ -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 } diff --git a/internal/setup/utils_test.go b/internal/setup/utils_test.go index 591b7914..faa7bd27 100644 --- a/internal/setup/utils_test.go +++ b/internal/setup/utils_test.go @@ -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) +}