87 lines
2.7 KiB
Go
87 lines
2.7 KiB
Go
package alert
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin/binding"
|
|
"github.com/go-admin-team/go-admin-core/sdk/api"
|
|
|
|
"go-admin/app/bell/evaluation"
|
|
)
|
|
|
|
type Handler struct{ api.Api }
|
|
|
|
func (h Handler) List(c *gin.Context) {
|
|
var query PageQuery
|
|
h.MakeContext(c).MakeOrm().Bind(&query, binding.Form)
|
|
if h.Errors != nil {
|
|
h.Error(http.StatusBadRequest, errors.New("查询条件不正确"), "查询条件不正确")
|
|
return
|
|
}
|
|
items, count, err := NewService(h.Orm).List(c.Request.Context(), query)
|
|
if err != nil {
|
|
h.Logger.Errorf("list Bell alerts failed: %v", err)
|
|
h.Error(http.StatusInternalServerError, errors.New("读取预警失败"), "读取预警失败")
|
|
return
|
|
}
|
|
page, size := pageValues(query.PageIndex, query.PageSize)
|
|
h.PageOK(items, int(count), page, size, "查询成功")
|
|
}
|
|
|
|
func (h Handler) Get(c *gin.Context) {
|
|
h.MakeContext(c).MakeOrm()
|
|
if h.Errors != nil {
|
|
h.Error(http.StatusInternalServerError, errors.New("数据库连接获取失败"), "数据库连接获取失败")
|
|
return
|
|
}
|
|
detail, err := NewService(h.Orm).Get(c.Request.Context(), c.Param("id"))
|
|
if err != nil {
|
|
if errors.Is(err, ErrNotFound) {
|
|
h.Error(http.StatusNotFound, ErrNotFound, ErrNotFound.Error())
|
|
return
|
|
}
|
|
h.Logger.Errorf("get Bell alert failed: %v", err)
|
|
h.Error(http.StatusInternalServerError, errors.New("读取预警失败"), "读取预警失败")
|
|
return
|
|
}
|
|
h.OK(detail, "查询成功")
|
|
}
|
|
|
|
func (h Handler) ListEvents(c *gin.Context) {
|
|
var query EventPageQuery
|
|
h.MakeContext(c).MakeOrm().Bind(&query, binding.Form)
|
|
if h.Errors != nil {
|
|
h.Error(http.StatusBadRequest, errors.New("查询条件不正确"), "查询条件不正确")
|
|
return
|
|
}
|
|
items, count, err := NewService(h.Orm).ListEvents(c.Request.Context(), query)
|
|
if err != nil {
|
|
h.Logger.Errorf("list Bell events failed: %v", err)
|
|
h.Error(http.StatusInternalServerError, errors.New("读取事件失败"), "读取事件失败")
|
|
return
|
|
}
|
|
page, size := pageValues(query.PageIndex, query.PageSize)
|
|
h.PageOK(items, int(count), page, size, "查询成功")
|
|
}
|
|
|
|
func (h Handler) EventResults(c *gin.Context) {
|
|
h.MakeContext(c).MakeOrm()
|
|
if h.Errors != nil {
|
|
h.Error(http.StatusInternalServerError, errors.New("数据库连接获取失败"), "数据库连接获取失败")
|
|
return
|
|
}
|
|
result, err := evaluation.NewService(h.Orm).ForEvent(c.Request.Context(), c.Param("id"))
|
|
if err != nil {
|
|
if errors.Is(err, evaluation.ErrEventNotFound) {
|
|
h.Error(http.StatusNotFound, evaluation.ErrEventNotFound, evaluation.ErrEventNotFound.Error())
|
|
return
|
|
}
|
|
h.Logger.Errorf("get Bell event rule results failed: %v", err)
|
|
h.Error(http.StatusInternalServerError, errors.New("读取规则评估失败"), "读取规则评估失败")
|
|
return
|
|
}
|
|
h.OK(result, "查询成功")
|
|
}
|