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 package handler
import ( import (
"fmt"
"net/http" "net/http"
"strconv" "strconv"
@ -15,14 +16,11 @@ import (
// QueryRealTimeDataHandler define query real time data process API // QueryRealTimeDataHandler define query real time data process API
func QueryRealTimeDataHandler(c *gin.Context) { func QueryRealTimeDataHandler(c *gin.Context) {
var targetLevel constants.AlertLevel token := c.Query("token")
beginStr := c.Query("begin")
alertManger := alert.GetAlertMangerInstance() begin, err := strconv.Atoi(beginStr)
levelStr := c.Query("level")
level, err := strconv.Atoi(levelStr)
if err != nil { 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{ resp := network.FailureResponse{
Code: http.StatusBadRequest, Code: http.StatusBadRequest,
@ -30,6 +28,23 @@ func QueryRealTimeDataHandler(c *gin.Context) {
} }
c.JSON(http.StatusOK, resp) 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) targetLevel = constants.AlertLevel(level)
events := alertManger.GetRangeEventsByLevel(targetLevel) events := alertManger.GetRangeEventsByLevel(targetLevel)

View File

@ -20,5 +20,4 @@ type MeasurementRecommendPayload struct {
Input string `json:"input" example:"transformfeeder1_220."` Input string `json:"input" example:"transformfeeder1_220."`
Offset int `json:"offset" example:"21"` 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" 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) registerDiagramRoutes(routeGroup)
registerAttrRoutes(routeGroup) registerAttrRoutes(routeGroup)
registerMeasurementRoutes(routeGroup, clientToken) registerMeasurementRoutes(routeGroup, clientToken)
registerDataRoutes(routeGroup)
} }