[feat]添加规则引擎debug功能

This commit is contained in:
PandaX
2023-10-27 15:28:29 +08:00
parent c2b16d5474
commit 0fcb262519
13 changed files with 2145 additions and 59 deletions

View File

@@ -8,14 +8,6 @@ import (
"time"
)
const (
TIME_TYPE_PROP = "telemetry"
TIME_TYPE_ATRE = "attributes"
TIME_TYPE_LOGS = "logs"
TIME_TYPE_ALARM = "alarm"
TIME_TYPE_EVENT = "event"
)
type TdEngine struct {
db *sql.DB
dbName string

View File

@@ -2,10 +2,10 @@ package tdengine
import (
"fmt"
"github.com/kakuilan/kgo"
"strings"
)
const connectTableName = "device_connect"
type ConnectInfo struct {
Ts string `json:"ts"`
ClientID string `json:"clientId"`
@@ -18,26 +18,12 @@ type ConnectInfo struct {
// CreateEventTable 创建设备连接事件表
func (s *TdEngine) CreateEventTable() (err error) {
sql := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s.device_connect (ts TIMESTAMP,deviceId NCHAR(64),
type NCHAR(64),clientId NCHAR(64),peerHost NCHAR(64),sockPort NCHAR(64),protocol NCHAR(64))`, s.dbName)
sql := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s.%s (ts TIMESTAMP,deviceId NCHAR(64),
type NCHAR(64),clientId NCHAR(64),peerHost NCHAR(64),sockPort NCHAR(64),protocol NCHAR(64))`, s.dbName, connectTableName)
_, err = s.db.Exec(sql)
return
}
func (s *TdEngine) InsertEvent(data map[string]any) (err error) {
if len(data) == 0 {
return
}
var (
field = []string{}
value = []string{}
)
for k, v := range data {
field = append(field, k)
value = append(value, "'"+kgo.KConv.ToStr(v)+"'")
}
sql := "INSERT INTO ? (?) VALUES (?)"
_, err = s.db.Exec(sql, "device_connect", strings.Join(field, ","), strings.Join(value, ","))
return err
return s.InsertDevice(connectTableName, data)
}

View File

@@ -2,6 +2,8 @@ package tdengine
import "time"
const logTableName = "device_log"
// CreateLogStable 添加LOG超级表
func (s *TdEngine) CreateLogStable() (err error) {
var name string

View File

@@ -0,0 +1,18 @@
package tdengine
import (
"fmt"
)
const debugTableName = "device_rule_debug"
func (s *TdEngine) CreateDeviceRuleDebugTable() (err error) {
sql := fmt.Sprintf(`CREATE TABLE IF NOT EXISTS %s.%s (ts TIMESTAMP,nodeId NCHAR(64),msgd NCHAR(64),debugType NCHAR(64),
deviceName NCHAR(64),msgType NCHAR(64),msg VARCHAR,metadata VARCHAR,error VARCHAR)`, s.dbName, debugTableName)
_, err = s.db.Exec(sql)
return
}
func (s *TdEngine) InsertRuleDebug(data map[string]any) (err error) {
return s.InsertDevice(debugTableName, data)
}