From f96ff94264e98a4510fddfe56c5b95119da41127 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 7 Jan 2023 10:29:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=97=B6=E5=90=8C=E6=97=B6=E5=8D=87=E7=BA=A7edgeClientAgentIPs?= =?UTF-8?q?=E4=B8=AD=E7=9A=84countIPs=E5=AD=97=E6=AE=B5=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/setup/sql_dump.go | 1 + internal/setup/sql_executor.go | 29 +++++++++++++++++++++++++++++ internal/setup/sql_executor_test.go | 29 +++++++++++++++++++++++++---- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/internal/setup/sql_dump.go b/internal/setup/sql_dump.go index df9a3065..1bf1627a 100644 --- a/internal/setup/sql_dump.go +++ b/internal/setup/sql_dump.go @@ -52,6 +52,7 @@ var recordsTables = []*SQLRecordsTable{ { TableName: "edgeClientAgents", UniqueFields: []string{"code"}, + ExceptFields: []string{"countIPs"}, }, { TableName: "edgeClientAgentIPs", diff --git a/internal/setup/sql_executor.go b/internal/setup/sql_executor.go index fb0c005e..e7cd7a95 100644 --- a/internal/setup/sql_executor.go +++ b/internal/setup/sql_executor.go @@ -124,6 +124,12 @@ func (this *SQLExecutor) checkData(db *dbs.DB) error { return err } + // 更新Agents + err = this.checkClientAgents(db) + if err != nil { + return err + } + // 更新版本号 err = this.updateVersion(db, ComposeSQLVersion()) if err != nil { @@ -471,6 +477,29 @@ func (this *SQLExecutor) checkMetricItems(db *dbs.DB) error { return nil } +// 更新Agents表 +func (this *SQLExecutor) checkClientAgents(db *dbs.DB) error { + ones, _, err := db.FindOnes("SELECT id FROM edgeClientAgents") + if err != nil { + return err + } + + for _, one := range ones { + var agentId = one.GetInt64("id") + + countIPs, err := db.FindCol(0, "SELECT COUNT(*) FROM edgeClientAgentIPs WHERE agentId=?", agentId) + if err != nil { + return err + } + _, err = db.Exec("UPDATE edgeClientAgents SET countIPs=? WHERE id=?", countIPs, agentId) + if err != nil { + return err + } + } + + return nil +} + // 更新版本号 func (this *SQLExecutor) updateVersion(db *dbs.DB, version string) error { stmt, err := db.Prepare("SELECT COUNT(*) FROM edgeVersions") diff --git a/internal/setup/sql_executor_test.go b/internal/setup/sql_executor_test.go index 585197c4..45505aa0 100644 --- a/internal/setup/sql_executor_test.go +++ b/internal/setup/sql_executor_test.go @@ -6,7 +6,7 @@ import ( ) func TestSQLExecutor_Run(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -19,7 +19,7 @@ func TestSQLExecutor_Run(t *testing.T) { } func TestSQLExecutor_checkCluster(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -40,7 +40,7 @@ func TestSQLExecutor_checkCluster(t *testing.T) { } func TestSQLExecutor_checkMetricItems(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -61,7 +61,7 @@ func TestSQLExecutor_checkMetricItems(t *testing.T) { } func TestSQLExecutor_checkNS(t *testing.T) { - executor := NewSQLExecutor(&dbs.DBConfig{ + var executor = NewSQLExecutor(&dbs.DBConfig{ Driver: "mysql", Prefix: "edge", Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge_new?charset=utf8mb4&multiStatements=true", @@ -80,3 +80,24 @@ func TestSQLExecutor_checkNS(t *testing.T) { } t.Log("ok") } + +func TestSQLExecutor_checkClientAgents(t *testing.T) { + var executor = NewSQLExecutor(&dbs.DBConfig{ + Driver: "mysql", + Prefix: "edge", + Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&multiStatements=true", + }) + db, err := dbs.NewInstanceFromConfig(executor.dbConfig) + if err != nil { + t.Fatal(err) + } + defer func() { + _ = db.Close() + }() + + err = executor.checkClientAgents(db) + if err != nil { + t.Fatal(err) + } + t.Log("ok") +}