mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 08:12:53 +08:00
65 lines
1.3 KiB
Go
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
|
|
}
|