optimize real time data query api

This commit is contained in:
douxu 2025-10-24 16:52:14 +08:00
parent 458f7afdbf
commit 954203b84d
5 changed files with 96 additions and 8 deletions

View File

@ -0,0 +1,58 @@
// Package handler provides HTTP handlers for various endpoints.
package handler
import (
"fmt"
"net/http"
"strconv"
"modelRT/alert"
"modelRT/constants"
"modelRT/logger"
"modelRT/network"
"github.com/gin-gonic/gin"
)
// QueryHistoryDataHandler define query history data process API
func QueryHistoryDataHandler(c *gin.Context) {
token := c.Query("token")
beginStr := c.Query("begin")
begin, err := strconv.Atoi(beginStr)
if err != nil {
logger.Error(c, "convert begin param from string to int failed", "error", err)
resp := network.FailureResponse{
Code: http.StatusBadRequest,
Msg: err.Error(),
}
c.JSON(http.StatusOK, resp)
}
endStr := c.Query("end")
end, err := strconv.Atoi(endStr)
if err != nil {
logger.Error(c, "convert end param from string to int failed", "error", err)
resp := network.FailureResponse{
Code: http.StatusBadRequest,
Msg: err.Error(),
}
c.JSON(http.StatusOK, resp)
}
fmt.Println(token, begin, end)
// TODO parse token to dataRT query params
var level int
var targetLevel constants.AlertLevel
alertManger := alert.GetAlertMangerInstance()
targetLevel = constants.AlertLevel(level)
events := alertManger.GetRangeEventsByLevel(targetLevel)
resp := network.SuccessResponse{
Code: http.StatusOK,
Msg: "success",
PayLoad: map[string]interface{}{
"events": events,
},
}
c.JSON(http.StatusOK, resp)
}

View File

@ -2,6 +2,7 @@
package handler
import (
"fmt"
"net/http"
"strconv"
@ -15,14 +16,11 @@ import (
// QueryRealTimeDataHandler define query real time data process API
func QueryRealTimeDataHandler(c *gin.Context) {
var targetLevel constants.AlertLevel
alertManger := alert.GetAlertMangerInstance()
levelStr := c.Query("level")
level, err := strconv.Atoi(levelStr)
token := c.Query("token")
beginStr := c.Query("begin")
begin, err := strconv.Atoi(beginStr)
if err != nil {
logger.Error(c, "convert alert level string to int failed", "error", err)
logger.Error(c, "convert begin param from string to int failed", "error", err)
resp := network.FailureResponse{
Code: http.StatusBadRequest,
@ -30,6 +28,23 @@ func QueryRealTimeDataHandler(c *gin.Context) {
}
c.JSON(http.StatusOK, resp)
}
endStr := c.Query("end")
end, err := strconv.Atoi(endStr)
if err != nil {
logger.Error(c, "convert end param from string to int failed", "error", err)
resp := network.FailureResponse{
Code: http.StatusBadRequest,
Msg: err.Error(),
}
c.JSON(http.StatusOK, resp)
}
fmt.Println(token, begin, end)
// TODO parse token to dataRT query params
var level int
var targetLevel constants.AlertLevel
alertManger := alert.GetAlertMangerInstance()
targetLevel = constants.AlertLevel(level)
events := alertManger.GetRangeEventsByLevel(targetLevel)

View File

@ -20,5 +20,4 @@ type MeasurementRecommendPayload struct {
Input string `json:"input" example:"transformfeeder1_220."`
Offset int `json:"offset" example:"21"`
RecommendedList []string `json:"recommended_list" example:"[\"I_A_rms\", \"I_B_rms\",\"I_C_rms\"]"`
// RecommendedList []string `json:"recommended_list"`
}

15
router/data.go Normal file
View File

@ -0,0 +1,15 @@
// Package router provides router config
package router
import (
"modelRT/handler"
"github.com/gin-gonic/gin"
)
// registerDataRoutes define func of register data routes
func registerDataRoutes(rg *gin.RouterGroup) {
g := rg.Group("/data/")
g.GET("realtime", handler.QueryRealTimeDataHandler)
g.GET("history", handler.QueryHistoryDataHandler)
}

View File

@ -23,4 +23,5 @@ func RegisterRoutes(engine *gin.Engine, clientToken string) {
registerDiagramRoutes(routeGroup)
registerAttrRoutes(routeGroup)
registerMeasurementRoutes(routeGroup, clientToken)
registerDataRoutes(routeGroup)
}