feat(alerting): add default notification group

This commit is contained in:
bergquist
2016-06-20 15:24:48 +02:00
parent 0a85efbf18
commit fa309ec925
7 changed files with 107 additions and 50 deletions

View File

@@ -46,7 +46,8 @@ func getAlertNotifications(query *m.GetAlertNotificationQuery, sess *xorm.Sessio
alert_notification.type,
alert_notification.created,
alert_notification.updated,
alert_notification.settings
alert_notification.settings,
alert_notification.always_execute
FROM alert_notification
`)
@@ -77,18 +78,43 @@ func getAlertNotifications(query *m.GetAlertNotificationQuery, sess *xorm.Sessio
sql.WriteString(`)`)
}
var result []*m.AlertNotification
if err := sess.Sql(sql.String(), params...).Find(&result); err != nil {
var searches []*m.AlertNotification
if err := sess.Sql(sql.String(), params...).Find(&searches); err != nil {
return err
}
var result []*m.AlertNotification
var def []*m.AlertNotification
if query.IncludeAlwaysExecute {
if err := sess.Where("org_id = ? AND always_execute = 1", query.OrgID).Find(&def); err != nil {
return err
}
result = append(result, def...)
}
for _, s := range searches {
canAppend := true
for _, d := range result {
if d.Id == s.Id {
canAppend = false
break
}
}
if canAppend {
result = append(result, s)
}
}
query.Result = result
return nil
}
func CreateAlertNotificationCommand(cmd *m.CreateAlertNotificationCommand) error {
return inTransaction(func(sess *xorm.Session) error {
existingQuery := &m.GetAlertNotificationQuery{OrgID: cmd.OrgID, Name: cmd.Name}
existingQuery := &m.GetAlertNotificationQuery{OrgID: cmd.OrgID, Name: cmd.Name, IncludeAlwaysExecute: false}
err := getAlertNotifications(existingQuery, sess)
if err != nil {
@@ -100,12 +126,13 @@ func CreateAlertNotificationCommand(cmd *m.CreateAlertNotificationCommand) error
}
alertNotification := &m.AlertNotification{
OrgId: cmd.OrgID,
Name: cmd.Name,
Type: cmd.Type,
Created: time.Now(),
Settings: cmd.Settings,
Updated: time.Now(),
OrgId: cmd.OrgID,
Name: cmd.Name,
Type: cmd.Type,
Created: time.Now(),
Settings: cmd.Settings,
Updated: time.Now(),
AlwaysExecute: cmd.AlwaysExecute,
}
_, err = sess.Insert(alertNotification)
@@ -114,7 +141,6 @@ func CreateAlertNotificationCommand(cmd *m.CreateAlertNotificationCommand) error
return err
}
//alertNotification.Id = int(id)
cmd.Result = alertNotification
return nil
})
@@ -137,9 +163,9 @@ func UpdateAlertNotification(cmd *m.UpdateAlertNotificationCommand) error {
alertNotification.Settings = cmd.Settings
alertNotification.Updated = time.Now()
alertNotification.Created = current.Created
alertNotification.AlwaysExecute = cmd.AlwaysExecute
var affected int64
//affected, err = sess.Id(alertNotification.Id).Cols("name", "type", "settings", "updated").Update(alertNotification)
affected, err = sess.Id(alertNotification.Id).Update(alertNotification)
if err != nil {