diff --git a/.gitignore b/.gitignore index d246042a1f37d671ad49cc771abcb83222e70dc7..c9c69f95881d4e2dacb18d47817aa8cc62432063 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ _test /vendor /tmp /pub +/n9e .alerts .idea diff --git a/src/models/alert_subscribe.go b/src/models/alert_subscribe.go index 51306b16dc0275c728be45d54bc313cdfeb05e65..4adecf66cd8b074168e55225c9eab0f8a2775907 100644 --- a/src/models/alert_subscribe.go +++ b/src/models/alert_subscribe.go @@ -40,6 +40,20 @@ func AlertSubscribeGets(groupId int64) (lst []AlertSubscribe, err error) { return } +func AlertSubscribeGet(where string, args ...interface{}) (*AlertSubscribe, error) { + var lst []*AlertSubscribe + err := DB().Where(where, args...).Find(&lst).Error + if err != nil { + return nil, err + } + + if len(lst) == 0 { + return nil, nil + } + + return lst[0], nil +} + func (s *AlertSubscribe) Verify() error { if s.Cluster == "" { return errors.New("cluster invalid") diff --git a/src/webapi/router/router.go b/src/webapi/router/router.go index 5e8ca71576932e7264d08af3f11920544b555324..c206eb3e66cddac75d09ea9fe41c9691e3db7982 100644 --- a/src/webapi/router/router.go +++ b/src/webapi/router/router.go @@ -185,6 +185,7 @@ func configRoute(r *gin.Engine, version string) { pages.DELETE("/busi-group/:id/alert-mutes", jwtAuth(), user(), bgrw(), alertMuteDel) pages.GET("/busi-group/:id/alert-subscribes", jwtAuth(), user(), bgro(), alertSubscribeGets) + pages.GET("/alert-subscribe/:sid", jwtAuth(), user(), bgro(), alertSubscribeGet) pages.POST("/busi-group/:id/alert-subscribes", jwtAuth(), user(), bgrw(), alertSubscribeAdd) pages.PUT("/busi-group/:id/alert-subscribes", jwtAuth(), user(), bgrw(), alertSubscribePut) pages.DELETE("/busi-group/:id/alert-subscribes", jwtAuth(), user(), bgrw(), alertSubscribeDel) diff --git a/src/webapi/router/router_alert_subscribe.go b/src/webapi/router/router_alert_subscribe.go index fec8a84a919677f9bbd4e3fa38b45302523c7d6a..f0effb39bebf9e9e0c45c51807e6aad2d250cf3a 100644 --- a/src/webapi/router/router_alert_subscribe.go +++ b/src/webapi/router/router_alert_subscribe.go @@ -28,6 +28,26 @@ func alertSubscribeGets(c *gin.Context) { ginx.NewRender(c).Data(lst, err) } +func alertSubscribeGet(c *gin.Context) { + subid := ginx.UrlParamInt64(c, "sid") + + sub, err := models.AlertSubscribeGet("id=?", subid) + ginx.Dangerous(err) + + if sub == nil { + ginx.NewRender(c, 404).Message("No such alert subscribe") + return + } + + ugcache := make(map[int64]*models.UserGroup) + sub.FillUserGroups(ugcache) + + rulecache := make(map[int64]string) + sub.FillRuleName(rulecache) + + ginx.NewRender(c).Data(sub, nil) +} + func alertSubscribeAdd(c *gin.Context) { var f models.AlertSubscribe ginx.BindJSON(c, &f)