diff --git a/internal/web/actions/default/db/cleanPopup.go b/internal/web/actions/default/db/cleanPopup.go new file mode 100644 index 00000000..d6e477a9 --- /dev/null +++ b/internal/web/actions/default/db/cleanPopup.go @@ -0,0 +1,56 @@ +package db + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) + +type CleanPopupAction struct { + actionutils.ParentAction +} + +func (this *CleanPopupAction) Init() { + this.Nav("", "", "") +} + +func (this *CleanPopupAction) RunGet(params struct { + NodeId int64 +}) { + this.Data["nodeId"] = params.NodeId + + this.Show() +} + +func (this *CleanPopupAction) RunPost(params struct { + NodeId int64 + + Must *actions.Must +}) { + tablesResp, err := this.RPC().DBNodeRPC().FindAllDBNodeTables(this.AdminContext(), &pb.FindAllDBNodeTablesRequest{ + DbNodeId: params.NodeId, + }) + if err != nil { + this.ErrorPage(err) + return + } + + tableMaps := []maps.Map{} + for _, table := range tablesResp.DbNodeTables { + if !table.IsBaseTable || (!table.CanClean && !table.CanDelete) { + continue + } + tableMaps = append(tableMaps, maps.Map{ + "name": table.Name, + "rows": table.Rows, + "size": numberutils.FormatBytes(table.DataLength + table.IndexLength), + "canDelete": table.CanDelete, + "canClean": table.CanClean, + "comment": table.Comment, + }) + } + this.Data["tables"] = tableMaps + this.Success() +} diff --git a/internal/web/actions/default/db/createPopup.go b/internal/web/actions/default/db/createPopup.go index 74967920..e6252334 100644 --- a/internal/web/actions/default/db/createPopup.go +++ b/internal/web/actions/default/db/createPopup.go @@ -62,7 +62,7 @@ func (this *CreatePopupAction) RunPost(params struct { } // 创建日志 - defer this.CreateLog(oplogs.LevelInfo, "创建数据库节点 %d", createResp.NodeId) + defer this.CreateLog(oplogs.LevelInfo, "创建数据库节点 %d", createResp.DbNodeId) this.Success() } diff --git a/internal/web/actions/default/db/delete.go b/internal/web/actions/default/db/delete.go index 5b6ee429..7abc97e4 100644 --- a/internal/web/actions/default/db/delete.go +++ b/internal/web/actions/default/db/delete.go @@ -16,7 +16,7 @@ func (this *DeleteAction) RunPost(params struct { // 创建日志 defer this.CreateLog(oplogs.LevelInfo, "删除数据库节点 %d", params.NodeId) - _, err := this.RPC().DBNodeRPC().DeleteDBNode(this.AdminContext(), &pb.DeleteDBNodeRequest{NodeId: params.NodeId}) + _, err := this.RPC().DBNodeRPC().DeleteDBNode(this.AdminContext(), &pb.DeleteDBNodeRequest{DbNodeId: params.NodeId}) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/db/deleteTable.go b/internal/web/actions/default/db/deleteTable.go new file mode 100644 index 00000000..2ff55227 --- /dev/null +++ b/internal/web/actions/default/db/deleteTable.go @@ -0,0 +1,27 @@ +package db + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type DeleteTableAction struct { + actionutils.ParentAction +} + +func (this *DeleteTableAction) RunPost(params struct { + NodeId int64 + Table string +}) { + defer this.CreateLogInfo("删除数据库节点 %d 数据表 %s", params.NodeId, params.Table) + + _, err := this.RPC().DBNodeRPC().DeleteDBNodeTable(this.AdminContext(), &pb.DeleteDBNodeTableRequest{ + DbNodeId: params.NodeId, + DbNodeTable: params.Table, + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Success() +} diff --git a/internal/web/actions/default/db/index.go b/internal/web/actions/default/db/index.go index 44083214..48a1d686 100644 --- a/internal/web/actions/default/db/index.go +++ b/internal/web/actions/default/db/index.go @@ -1,6 +1,7 @@ package db import ( + "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/maps" @@ -32,7 +33,7 @@ func (this *IndexAction) RunGet(params struct{}) { return } nodeMaps := []maps.Map{} - for _, node := range listResp.Nodes { + for _, node := range listResp.DbNodes { nodeMaps = append(nodeMaps, maps.Map{ "id": node.Id, "isOn": node.IsOn, @@ -40,6 +41,11 @@ func (this *IndexAction) RunGet(params struct{}) { "host": node.Host, "port": node.Port, "database": node.Database, + "status": maps.Map{ + "isOk": node.Status.IsOk, + "error": node.Status.Error, + "size": numberutils.FormatBytes(node.Status.Size), + }, }) } diff --git a/internal/web/actions/default/db/init.go b/internal/web/actions/default/db/init.go index 7a2e1854..6c111335 100644 --- a/internal/web/actions/default/db/init.go +++ b/internal/web/actions/default/db/init.go @@ -18,6 +18,9 @@ func init() { GetPost("/createPopup", new(CreatePopupAction)). GetPost("/updatePopup", new(UpdatePopupAction)). Post("/delete", new(DeleteAction)). + GetPost("/cleanPopup", new(CleanPopupAction)). + Post("/deleteTable", new(DeleteTableAction)). + Post("/truncateTable", new(TruncateTableAction)). EndAll() }) diff --git a/internal/web/actions/default/db/truncateTable.go b/internal/web/actions/default/db/truncateTable.go new file mode 100644 index 00000000..156bed9a --- /dev/null +++ b/internal/web/actions/default/db/truncateTable.go @@ -0,0 +1,27 @@ +package db + +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +type TruncateTableAction struct { + actionutils.ParentAction +} + +func (this *TruncateTableAction) RunPost(params struct { + NodeId int64 + Table string +}) { + defer this.CreateLogInfo("清空数据库节点 %d 数据表 %s 数据", params.NodeId, params.Table) + + _, err := this.RPC().DBNodeRPC().TruncateDBNodeTable(this.AdminContext(), &pb.TruncateDBNodeTableRequest{ + DbNodeId: params.NodeId, + DbNodeTable: params.Table, + }) + if err != nil { + this.ErrorPage(err) + return + } + this.Success() +} diff --git a/internal/web/actions/default/db/updatePopup.go b/internal/web/actions/default/db/updatePopup.go index 9602c975..91451f35 100644 --- a/internal/web/actions/default/db/updatePopup.go +++ b/internal/web/actions/default/db/updatePopup.go @@ -19,13 +19,13 @@ func (this *UpdatePopupAction) Init() { func (this *UpdatePopupAction) RunGet(params struct { NodeId int64 }) { - nodeResp, err := this.RPC().DBNodeRPC().FindEnabledDBNode(this.AdminContext(), &pb.FindEnabledDBNodeRequest{NodeId: params.NodeId}) + nodeResp, err := this.RPC().DBNodeRPC().FindEnabledDBNode(this.AdminContext(), &pb.FindEnabledDBNodeRequest{DbNodeId: params.NodeId}) if err != nil { this.ErrorPage(err) return } - node := nodeResp.Node + node := nodeResp.DbNode if node == nil { this.NotFound("dbNode", params.NodeId) return @@ -78,7 +78,7 @@ func (this *UpdatePopupAction) RunPost(params struct { Require("请输入连接数据库的用户名") _, err := this.RPC().DBNodeRPC().UpdateDBNode(this.AdminContext(), &pb.UpdateDBNodeRequest{ - NodeId: params.NodeId, + DbNodeId: params.NodeId, IsOn: params.IsOn, Name: params.Name, Description: params.Description, diff --git a/internal/web/actions/default/settings/database/clean.go b/internal/web/actions/default/settings/database/clean.go index f8cf05ec..281fa16b 100644 --- a/internal/web/actions/default/settings/database/clean.go +++ b/internal/web/actions/default/settings/database/clean.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" diff --git a/internal/web/actions/default/settings/database/cleanSetting.go b/internal/web/actions/default/settings/database/cleanSetting.go index df6d752e..df9a0a69 100644 --- a/internal/web/actions/default/settings/database/cleanSetting.go +++ b/internal/web/actions/default/settings/database/cleanSetting.go @@ -1,4 +1,4 @@ -package profile +package database import ( "encoding/json" diff --git a/internal/web/actions/default/settings/database/deleteTable.go b/internal/web/actions/default/settings/database/deleteTable.go index 329f8ef1..b41ac843 100644 --- a/internal/web/actions/default/settings/database/deleteTable.go +++ b/internal/web/actions/default/settings/database/deleteTable.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" diff --git a/internal/web/actions/default/settings/database/index.go b/internal/web/actions/default/settings/database/index.go index 318e089f..1f461029 100644 --- a/internal/web/actions/default/settings/database/index.go +++ b/internal/web/actions/default/settings/database/index.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" diff --git a/internal/web/actions/default/settings/database/init.go b/internal/web/actions/default/settings/database/init.go index 2d932834..8c0a602d 100644 --- a/internal/web/actions/default/settings/database/init.go +++ b/internal/web/actions/default/settings/database/init.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" diff --git a/internal/web/actions/default/settings/database/truncateTable.go b/internal/web/actions/default/settings/database/truncateTable.go index 282f0ab7..07b1b3b8 100644 --- a/internal/web/actions/default/settings/database/truncateTable.go +++ b/internal/web/actions/default/settings/database/truncateTable.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" diff --git a/internal/web/actions/default/settings/database/update.go b/internal/web/actions/default/settings/database/update.go index 7c79eafb..f3071efc 100644 --- a/internal/web/actions/default/settings/database/update.go +++ b/internal/web/actions/default/settings/database/update.go @@ -1,4 +1,4 @@ -package profile +package database import ( "fmt" diff --git a/internal/web/actions/default/settings/profile/index.go b/internal/web/actions/default/settings/profile/index.go index 77719a0d..da55a8f4 100644 --- a/internal/web/actions/default/settings/profile/index.go +++ b/internal/web/actions/default/settings/profile/index.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" diff --git a/internal/web/actions/default/settings/profile/init.go b/internal/web/actions/default/settings/profile/init.go index 7d18c25c..6e4dd0b8 100644 --- a/internal/web/actions/default/settings/profile/init.go +++ b/internal/web/actions/default/settings/profile/init.go @@ -1,4 +1,4 @@ -package profile +package database import ( "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" diff --git a/web/views/@default/db/cleanPopup.html b/web/views/@default/db/cleanPopup.html new file mode 100644 index 00000000..cc1f9bd3 --- /dev/null +++ b/web/views/@default/db/cleanPopup.html @@ -0,0 +1,23 @@ +{$layout "layout_popup"} + +
+ +| 表名 | +占用空间 | +用途 | +操作 | +
|---|---|---|---|
| {{table.name}} | +{{table.size}} | +{{table.comment}} | ++ 删除 + 清空 + | +
天数包括当天。如果填0表示不自动清理。
+天数包括当天。如果填0表示不自动清理。此设置也会同时作用于日志数据库。