alert_state.go 719 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package sqlstore
  2. import (
  3. "fmt"
  4. "github.com/go-xorm/xorm"
  5. "github.com/grafana/grafana/pkg/bus"
  6. m "github.com/grafana/grafana/pkg/models"
  7. )
  8. func init() {
  9. bus.AddHandler("sql", SetNewAlertState)
  10. }
  11. func SetNewAlertState(cmd *m.UpdateAlertStateCommand) error {
  12. return inTransaction(func(sess *xorm.Session) error {
  13. if !cmd.IsValidState() {
  14. return fmt.Errorf("new state is invalid")
  15. }
  16. alert := m.AlertRule{}
  17. has, err := sess.Id(cmd.AlertId).Get(&alert)
  18. if !has {
  19. return fmt.Errorf("Could not find alert")
  20. }
  21. if err != nil {
  22. return err
  23. }
  24. alert.State = cmd.NewState
  25. sess.Id(alert.Id).Update(&alert)
  26. //update alert
  27. //insert alert state log
  28. cmd.Result = &alert
  29. return nil
  30. })
  31. }