Files
2026-08-12 18:59:29 +08:00

54 lines
1.3 KiB
Go

package handler
import (
"github.com/go-orz/orz"
"github.com/labstack/echo/v5"
"github.com/pika-monitor/pika/internal/service"
"go.uber.org/zap"
)
type AlertHandler struct {
logger *zap.Logger
alertService *service.AlertService
}
func NewAlertHandler(logger *zap.Logger, alertService *service.AlertService) *AlertHandler {
return &AlertHandler{
logger: logger,
alertService: alertService,
}
}
// ListAlertRecords 列出告警记录
func (h *AlertHandler) ListAlertRecords(c *echo.Context) error {
agentID := c.QueryParam("agentId")
pr := orz.GetPageRequest(c, "createdAt", "firedAt")
builder := orz.NewPageBuilder(h.alertService.AlertRecordRepo.Repository).
PageRequest(pr)
if agentID != "" {
builder.Equal("agent_id", agentID)
}
ctx := c.Request().Context()
page, err := builder.Execute(ctx)
if err != nil {
h.logger.Error("获取告警记录失败", zap.Error(err))
return err
}
return orz.Ok(c, page)
}
// ClearAlertRecords 清空告警记录
func (h *AlertHandler) ClearAlertRecords(c *echo.Context) error {
if err := h.alertService.Clear(c.Request().Context()); err != nil {
h.logger.Error("清空告警记录失败", zap.Error(err))
return orz.NewError(500, "清空告警记录失败")
}
return orz.Ok(c, orz.Map{})
}