Browse Source

feat(alerting): remove annotations when deleting alert, closes #6244

Torkel Ödegaard 9 years ago
parent
commit
46bab0bb37
1 changed files with 17 additions and 17 deletions
  1. 17 17
      pkg/services/sqlstore/alert.go

+ 17 - 17
pkg/services/sqlstore/alert.go

@@ -46,13 +46,23 @@ func GetAllAlertQueryHandler(query *m.GetAllAlertsQuery) error {
 	return nil
 	return nil
 }
 }
 
 
+func deleteAlertByIdInternal(alertId int64, reason string, sess *xorm.Session) error {
+	sqlog.Debug("Deleting alert", "id", alertId, "reason", reason)
+
+	if _, err := sess.Exec("DELETE FROM alert WHERE id = ?", alertId); err != nil {
+		return err
+	}
+
+	if _, err := sess.Exec("DELETE FROM annotation WHERE alert_id = ?", alertId); err != nil {
+		return err
+	}
+
+	return nil
+}
+
 func DeleteAlertById(cmd *m.DeleteAlertCommand) error {
 func DeleteAlertById(cmd *m.DeleteAlertCommand) error {
 	return inTransaction(func(sess *xorm.Session) error {
 	return inTransaction(func(sess *xorm.Session) error {
-		if _, err := sess.Exec("DELETE FROM alert WHERE id = ?", cmd.AlertId); err != nil {
-			return err
-		}
-
-		return nil
+		return deleteAlertByIdInternal(cmd.AlertId, "DeleteAlertCommand", sess)
 	})
 	})
 }
 }
 
 
@@ -110,12 +120,7 @@ func DeleteAlertDefinition(dashboardId int64, sess *xorm.Session) error {
 	sess.Where("dashboard_id = ?", dashboardId).Find(&alerts)
 	sess.Where("dashboard_id = ?", dashboardId).Find(&alerts)
 
 
 	for _, alert := range alerts {
 	for _, alert := range alerts {
-		_, err := sess.Exec("DELETE FROM alert WHERE id = ? ", alert.Id)
-		if err != nil {
-			return err
-		}
-
-		sqlog.Debug("Alert deleted (due to dashboard deletion)", "name", alert.Name, "id", alert.Id)
+		deleteAlertByIdInternal(alert.Id, "Dashboard deleted", sess)
 	}
 	}
 
 
 	return nil
 	return nil
@@ -195,12 +200,7 @@ func deleteMissingAlerts(alerts []*m.Alert, cmd *m.SaveAlertsCommand, sess *xorm
 		}
 		}
 
 
 		if missing {
 		if missing {
-			_, err := sess.Exec("DELETE FROM alert WHERE id = ?", missingAlert.Id)
-			if err != nil {
-				return err
-			}
-
-			sqlog.Debug("Alert deleted", "name", missingAlert.Name, "id", missingAlert.Id)
+			deleteAlertByIdInternal(missingAlert.Id, "Removed from dashboard", sess)
 		}
 		}
 	}
 	}