grafana/pkg/models/alert.go

116 lines
1.9 KiB
Go
Raw Normal View History

package models
import (
"time"
"github.com/grafana/grafana/pkg/components/simplejson"
)
type Alert struct {
Id int64
OrgId int64
DashboardId int64
PanelId int64
Name string
Description string
State string
Scheduler int64
Enabled bool
Created time.Time
Updated time.Time
2016-06-13 21:18:19 +08:00
Settings *simplejson.Json
}
func (alert *Alert) ValidToSave() bool {
return alert.DashboardId != 0 && alert.OrgId != 0 && alert.PanelId != 0
}
func (this *Alert) ContainsUpdates(other *Alert) bool {
result := false
result = result || this.Name != other.Name
result = result || this.Description != other.Description
2016-06-13 21:18:19 +08:00
if this.Settings != nil && other.Settings != nil {
json1, err1 := this.Settings.Encode()
json2, err2 := other.Settings.Encode()
2016-06-10 17:37:03 +08:00
if err1 != nil || err2 != nil {
return false
}
2016-06-10 17:37:03 +08:00
result = result || string(json1) != string(json2)
}
//don't compare .State! That would be insane.
return result
}
type AlertingClusterInfo struct {
ServerId string
ClusterSize int
UptimePosition int
}
2016-06-09 16:00:34 +08:00
type HeartBeat struct {
Id int64
ServerId string
Updated time.Time
Created time.Time
}
type HeartBeatCommand struct {
2016-05-23 16:02:17 +08:00
ServerId string
Result AlertingClusterInfo
2016-05-23 16:02:17 +08:00
}
type AlertChange struct {
Id int64 `json:"id"`
OrgId int64 `json:"-"`
AlertId int64 `json:"alertId"`
Type string `json:"type"`
Created time.Time `json:"created"`
}
// Commands
type SaveAlertsCommand struct {
DashboardId int64
UserId int64
OrgId int64
Alerts []*Alert
}
type DeleteAlertCommand struct {
AlertId int64
}
//Queries
type GetAlertsQuery struct {
OrgId int64
State []string
DashboardId int64
PanelId int64
Result []*Alert
}
type GetAllAlertsQuery struct {
Result []*Alert
}
type GetAlertByIdQuery struct {
Id int64
Result *Alert
}
type GetAlertChangesQuery struct {
OrgId int64
Limit int64
SinceId int64
Result []*AlertChange
}