From ecd231d3d33ceb55bb60ff61ba239b7002bf9159 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 8 Apr 2022 15:09:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=A4=E4=B8=AA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=9B=B8=E5=85=B3=E8=B0=83=E8=AF=95=E5=91=BD?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/edge-api/main.go | 26 ++++++++++++++++++++++++++ internal/nodes/api_node.go | 18 ++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/cmd/edge-api/main.go b/cmd/edge-api/main.go index 327c4d05..b6b0ad04 100644 --- a/cmd/edge-api/main.go +++ b/cmd/edge-api/main.go @@ -11,6 +11,7 @@ import ( "github.com/iwind/TeaGo/Tea" _ "github.com/iwind/TeaGo/bootstrap" "github.com/iwind/TeaGo/maps" + "github.com/iwind/TeaGo/types" "github.com/iwind/gosock/pkg/gosock" "log" "os" @@ -97,6 +98,31 @@ func main() { } } }) + app.On("db.stmt.prepare", func() { + var sock = gosock.NewTmpSock(teaconst.ProcessName) + reply, err := sock.Send(&gosock.Command{Code: "db.stmt.prepare"}) + if err != nil { + fmt.Println("[ERROR]" + err.Error()) + } else { + var isOn = maps.NewMap(reply.Params).GetBool("isOn") + if isOn { + fmt.Println("show statements: on") + } else { + fmt.Println("show statements: off") + } + } + }) + app.On("db.stmt.count", func() { + var sock = gosock.NewTmpSock(teaconst.ProcessName) + reply, err := sock.Send(&gosock.Command{Code: "db.stmt.count"}) + if err != nil { + fmt.Println("[ERROR]" + err.Error()) + } else { + var count = maps.NewMap(reply.Params).GetInt("count") + fmt.Println("prepared statements count: " + types.String(count)) + } + }) + app.Run(func() { nodes.NewAPINode().Start() }) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index a5fdd092..2905e645 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -585,8 +585,22 @@ func (this *APINode) listenSock() error { _ = cmd.Reply(&gosock.Command{ Params: map[string]interface{}{"debug": teaconst.Debug}, }) - case "db.stmt": - dbs.ShowPreparedStatements = true + case "db.stmt.prepare": + dbs.ShowPreparedStatements = !dbs.ShowPreparedStatements + _ = cmd.Reply(&gosock.Command{ + Params: map[string]interface{}{"isOn": dbs.ShowPreparedStatements}, + }) + case "db.stmt.count": + db, _ := dbs.Default() + if db != nil { + _ = cmd.Reply(&gosock.Command{ + Params: map[string]interface{}{"count": db.StmtManager().Len()}, + }) + } else { + _ = cmd.Reply(&gosock.Command{ + Params: map[string]interface{}{"count": 0}, + }) + } } })