From 89a69e3165783d93c91c28d0d2aa989dc022a1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Thu, 28 Jul 2022 09:47:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=9B=86=E7=BE=A4=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=8A=82=E7=82=B9=E8=BF=90=E8=A1=8C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_cluster_dao.go | 10 +++++--- internal/db/models/node_cluster_dao_test.go | 12 ++++++++++ internal/db/models/node_log_dao.go | 26 +++++++++++++++++++++ internal/db/models/ns_cluster_dao.go | 10 +++++--- internal/db/models/ns_cluster_dao_test.go | 13 +++++++++++ 5 files changed, 65 insertions(+), 6 deletions(-) diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index 37a0be50..9dfc362d 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -55,12 +55,16 @@ func (this *NodeClusterDAO) EnableNodeCluster(tx *dbs.Tx, id int64) error { } // DisableNodeCluster 禁用条目 -func (this *NodeClusterDAO) DisableNodeCluster(tx *dbs.Tx, id int64) error { +func (this *NodeClusterDAO) DisableNodeCluster(tx *dbs.Tx, clusterId int64) error { _, err := this.Query(tx). - Pk(id). + Pk(clusterId). Set("state", NodeClusterStateDisabled). Update() - return err + if err != nil { + return err + } + + return SharedNodeLogDAO.DeleteNodeLogsWithCluster(tx, nodeconfigs.NodeRoleNode, clusterId) } // FindEnabledNodeCluster 查找集群 diff --git a/internal/db/models/node_cluster_dao_test.go b/internal/db/models/node_cluster_dao_test.go index 97c24b56..3b723ce9 100644 --- a/internal/db/models/node_cluster_dao_test.go +++ b/internal/db/models/node_cluster_dao_test.go @@ -2,4 +2,16 @@ package models import ( _ "github.com/go-sql-driver/mysql" + "github.com/iwind/TeaGo/dbs" + "testing" ) + +func TestNodeClusterDAO_DisableNodeCluster(t *testing.T) { + dbs.NotifyReady() + + err := SharedNodeClusterDAO.DisableNodeCluster(nil, 46) + if err != nil { + t.Fatal(err) + } + t.Log("ok") +} diff --git a/internal/db/models/node_log_dao.go b/internal/db/models/node_log_dao.go index 21f5e322..d18cacad 100644 --- a/internal/db/models/node_log_dao.go +++ b/internal/db/models/node_log_dao.go @@ -363,9 +363,35 @@ func (this *NodeLogDAO) UpdateAllNodeLogsRead(tx *dbs.Tx) error { // DeleteNodeLogs 删除某个节点上的日志 func (this *NodeLogDAO) DeleteNodeLogs(tx *dbs.Tx, role nodeconfigs.NodeRole, nodeId int64) error { + if nodeId <= 0 { + return nil + } _, err := this.Query(tx). Attr("nodeId", nodeId). Attr("role", role). Delete() return err } + +// DeleteNodeLogsWithCluster 删除某个集群下的所有日志 +func (this *NodeLogDAO) DeleteNodeLogsWithCluster(tx *dbs.Tx, role nodeconfigs.NodeRole, clusterId int64) error { + if clusterId <= 0 { + return nil + } + var query = this.Query(tx). + Attr("role", role) + + switch role { + case nodeconfigs.NodeRoleNode: + query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE clusterId=:clusterId)") + query.Param("clusterId", clusterId) + case nodeconfigs.NodeRoleDNS: + query.Where("nodeId IN (SELECT id FROM " + SharedNSNodeDAO.Table + " WHERE clusterId=:clusterId)") + query.Param("clusterId", clusterId) + default: + return nil + } + + _, err := query.Delete() + return err +} diff --git a/internal/db/models/ns_cluster_dao.go b/internal/db/models/ns_cluster_dao.go index 9f7ea089..44918b32 100644 --- a/internal/db/models/ns_cluster_dao.go +++ b/internal/db/models/ns_cluster_dao.go @@ -46,12 +46,16 @@ func (this *NSClusterDAO) EnableNSCluster(tx *dbs.Tx, id int64) error { } // DisableNSCluster 禁用条目 -func (this *NSClusterDAO) DisableNSCluster(tx *dbs.Tx, id int64) error { +func (this *NSClusterDAO) DisableNSCluster(tx *dbs.Tx, clusterId int64) error { _, err := this.Query(tx). - Pk(id). + Pk(clusterId). Set("state", NSClusterStateDisabled). Update() - return err + if err != nil { + return err + } + + return SharedNodeLogDAO.DeleteNodeLogsWithCluster(tx, nodeconfigs.NodeRoleDNS, clusterId) } // FindEnabledNSCluster 查找启用中的条目 diff --git a/internal/db/models/ns_cluster_dao_test.go b/internal/db/models/ns_cluster_dao_test.go index 224e9db7..8452dbc7 100644 --- a/internal/db/models/ns_cluster_dao_test.go +++ b/internal/db/models/ns_cluster_dao_test.go @@ -3,4 +3,17 @@ package models import ( _ "github.com/go-sql-driver/mysql" _ "github.com/iwind/TeaGo/bootstrap" + "github.com/iwind/TeaGo/dbs" + "testing" ) + + +func TestNSClusterDAO_DisableNodeCluster(t *testing.T) { + dbs.NotifyReady() + + err := SharedNSClusterDAO.DisableNSCluster(nil, 7) + if err != nil { + t.Fatal(err) + } + t.Log("ok") +}