commands.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package alerting
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. type UpdateDashboardAlertsCommand struct {
  7. UserId int64
  8. OrgId int64
  9. Dashboard *m.Dashboard
  10. }
  11. type ValidateDashboardAlertsCommand struct {
  12. UserId int64
  13. OrgId int64
  14. Dashboard *m.Dashboard
  15. }
  16. func init() {
  17. bus.AddHandler("alerting", updateDashboardAlerts)
  18. bus.AddHandler("alerting", validateDashboardAlerts)
  19. }
  20. func validateDashboardAlerts(cmd *ValidateDashboardAlertsCommand) error {
  21. extractor := NewDashAlertExtractor(cmd.Dashboard, cmd.OrgId)
  22. if _, err := extractor.GetAlerts(); err != nil {
  23. return err
  24. }
  25. return nil
  26. }
  27. func updateDashboardAlerts(cmd *UpdateDashboardAlertsCommand) error {
  28. saveAlerts := m.SaveAlertsCommand{
  29. OrgId: cmd.OrgId,
  30. UserId: cmd.UserId,
  31. DashboardId: cmd.Dashboard.Id,
  32. }
  33. extractor := NewDashAlertExtractor(cmd.Dashboard, cmd.OrgId)
  34. if alerts, err := extractor.GetAlerts(); err != nil {
  35. return err
  36. } else {
  37. saveAlerts.Alerts = alerts
  38. }
  39. if err := bus.Dispatch(&saveAlerts); err != nil {
  40. return err
  41. }
  42. return nil
  43. }