package handler import ( "encoding/json" "fmt" "github.com/rabbitmq/amqp091-go" "math/rand" "samba/pkg/log" "samba/proto" "samba/util/util" "strconv" ) func onAddClickHouseLog(_ *amqp091.Delivery, msg map[string]interface{}) { req, err := util.MapToStructT[proto.NtfClickHouseSql](msg["p"]) if err != nil { log.Error(err.Error()) return } dbs := gDBServices.Get(req.UId) _, err = dbs.Exec(req.Sql) if err != nil { log.Error(fmt.Sprintf("error:%v inserting clickhouse sql: %v", err, req.Sql)) } log.Debug(req.Sql) return } func onInsertClickHouse(_ *amqp091.Delivery, msg map[string]interface{}) { req, err := util.MapToStructT[proto.ReqInsertClickHouse](msg["p"]) if err != nil { log.Error(err.Error()) return } dbs := gDBServices.Get(int64(rand.Int())) var sql string if sql, err = util.MapToInsertSQL(req.TableName, req.Values); err == nil { log.Debug(sql) _, err = dbs.Exec(sql) } if err != nil { d, _ := json.Marshal(req.Values) log.Error(fmt.Sprintf("error:%v inserting clickhouse.tablename:%v, values:%v", err, req.TableName, string(d))) } return } func onReqGetOnlineFlow(d *amqp091.Delivery, msg map[string]interface{}) { req, err := util.MapToStructT[proto.ReqGetOnlineFlow](msg["p"]) if err != nil { log.Error(err.Error()) return } log.Debug(fmt.Sprintf("onReqGetOnlineFlow date=%s, time=%d", req.Date, req.TimeStamp)) dbs := gDBServices.Get(0) rsp := &proto.RspGetOnlineFlow{} defer func() { rid, _ := msg["rid"].(string) SendMsgToRPC(d, dbs, rsp, rid, "onReqGetOnlineFlow") }() date, err := strconv.Atoi(req.Date) if err != nil { rsp.Err = err.Error() return } res, err := dbs.Select("SELECT * FROM online_flow WHERE date=? AND time=?", date, req.TimeStamp) if err != nil { rsp.Err = err.Error() return } for res.Next() { var flow proto.OnlineFlow if err = res.Scan(&flow.Time, &flow.Api, &flow.Date, &flow.Online, &flow.Onplay); err != nil { rsp.Err = err.Error() return } rsp.Flows = append(rsp.Flows, flow) } }