|
@@ -1,15 +1,17 @@
|
|
|
package sqlstore
|
|
package sqlstore
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "bytes"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"github.com/go-xorm/xorm"
|
|
"github.com/go-xorm/xorm"
|
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
"github.com/grafana/grafana/pkg/bus"
|
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
m "github.com/grafana/grafana/pkg/models"
|
|
|
|
|
+ "strings"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
func init() {
|
|
|
bus.AddHandler("sql", SaveAlerts)
|
|
bus.AddHandler("sql", SaveAlerts)
|
|
|
- bus.AddHandler("sql", GetAllAlertsForOrg)
|
|
|
|
|
|
|
+ bus.AddHandler("sql", HandleAlertsQuery)
|
|
|
bus.AddHandler("sql", GetAlertById)
|
|
bus.AddHandler("sql", GetAlertById)
|
|
|
bus.AddHandler("sql", GetAlertsByDashboardId)
|
|
bus.AddHandler("sql", GetAlertsByDashboardId)
|
|
|
bus.AddHandler("sql", GetAlertsByDashboardAndPanelId)
|
|
bus.AddHandler("sql", GetAlertsByDashboardAndPanelId)
|
|
@@ -41,9 +43,33 @@ func DeleteAlertById(cmd *m.DeleteAlertCommand) error {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func GetAllAlertsForOrg(query *m.GetAlertsQuery) error {
|
|
|
|
|
|
|
+func HandleAlertsQuery(query *m.GetAlertsQuery) error {
|
|
|
|
|
+ var sql bytes.Buffer
|
|
|
|
|
+ params := make([]interface{}, 0)
|
|
|
|
|
+
|
|
|
|
|
+ sql.WriteString(`SELECT *
|
|
|
|
|
+ from alert_rule
|
|
|
|
|
+ `)
|
|
|
|
|
+
|
|
|
|
|
+ sql.WriteString(`WHERE org_id = ?`)
|
|
|
|
|
+ params = append(params, query.OrgId)
|
|
|
|
|
+
|
|
|
|
|
+ if len(query.State) > 0 {
|
|
|
|
|
+
|
|
|
|
|
+ sql.WriteString(` AND (`)
|
|
|
|
|
+ for i, v := range query.State {
|
|
|
|
|
+ if i > 0 {
|
|
|
|
|
+ sql.WriteString(" OR ")
|
|
|
|
|
+ }
|
|
|
|
|
+ sql.WriteString("state = ? ")
|
|
|
|
|
+ params = append(params, strings.ToUpper(v))
|
|
|
|
|
+ }
|
|
|
|
|
+ sql.WriteString(")")
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
alerts := make([]m.AlertRule, 0)
|
|
alerts := make([]m.AlertRule, 0)
|
|
|
- if err := x.Where("org_id = ?", query.OrgId).Find(&alerts); err != nil {
|
|
|
|
|
|
|
+ if err := x.Sql(sql.String(), params...).Find(&alerts); err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -127,6 +153,7 @@ func upsertAlerts(alerts []m.AlertRule, posted *[]m.AlertRule, sess *xorm.Sessio
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ alert.State = "OK"
|
|
|
_, err := sess.Insert(&alert)
|
|
_, err := sess.Insert(&alert)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|