func upsertAlerts(existingAlerts []*m.Alert, cmd *m.SaveAlertsCommand, sess *xorm.Session) error { for _, alert := range cmd.Alerts { update := false var alertToUpdate *m.Alert for _, k := range existingAlerts { if alert.PanelId == k.PanelId { update = true alert.Id = k.Id alertToUpdate = k break } } if update { if alertToUpdate.ContainsUpdates(alert) { alert.Updated = time.Now() alert.State = alertToUpdate.State _, err := sess.Id(alert.Id).Update(alert) if err != nil { return err } sqlog.Debug("Alert updated", "name", alert.Name, "id", alert.Id) } } else { alert.Updated = time.Now() alert.Created = time.Now() alert.State = m.AlertStateNoData alert.NewStateDate = time.Now() _, err := sess.Insert(alert) if err != nil { return err } sqlog.Debug("Alert inserted", "name", alert.Name, "id", alert.Id) } } return nil }