Files
grafana/pkg/services/sqlstore/alert_rule_changes.go
2016-06-06 13:50:47 +02:00

65 lines
1.3 KiB
Go

package sqlstore
import (
"bytes"
"time"
"github.com/go-xorm/xorm"
"github.com/grafana/grafana/pkg/bus"
m "github.com/grafana/grafana/pkg/models"
)
func init() {
bus.AddHandler("sql", GetAlertRuleChanges)
}
func GetAlertRuleChanges(query *m.GetAlertChangesQuery) error {
var sql bytes.Buffer
params := make([]interface{}, 0)
sql.WriteString(`SELECT
alert_rule_change.id,
alert_rule_change.org_id,
alert_rule_change.alert_id,
alert_rule_change.type,
alert_rule_change.created
FROM alert_rule_change
`)
sql.WriteString(`WHERE alert_rule_change.org_id = ?`)
params = append(params, query.OrgId)
if query.SinceId != 0 {
sql.WriteString(`AND alert_rule_change.id >= ?`)
params = append(params, query.SinceId)
}
if query.Limit != 0 {
sql.WriteString(` ORDER BY alert_rule_change.id DESC LIMIT ?`)
params = append(params, query.Limit)
}
alertChanges := make([]*m.AlertRuleChange, 0)
if err := x.Sql(sql.String(), params...).Find(&alertChanges); err != nil {
return err
}
query.Result = alertChanges
return nil
}
func SaveAlertChange(change string, alert *m.AlertRule, sess *xorm.Session) error {
_, err := sess.Insert(&m.AlertRuleChange{
OrgId: alert.OrgId,
Type: change,
Created: time.Now(),
AlertId: alert.Id,
})
if err != nil {
return err
}
return nil
}