mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-08-15 17:34:15 +08:00
43 lines
2.0 KiB
Go
43 lines
2.0 KiB
Go
package model
|
||
|
||
import "time"
|
||
|
||
// 通知事件类型(企业级事件总线)。
|
||
// 任一 Notification 可订阅多个事件,EventTypes 字段存 CSV。
|
||
// 空 EventTypes + OnSuccess/OnFailure=true 时沿用旧语义(仅备份成功/失败)。
|
||
const (
|
||
NotificationEventBackupSuccess = "backup_success"
|
||
NotificationEventBackupFailed = "backup_failed"
|
||
NotificationEventRestoreSuccess = "restore_success"
|
||
NotificationEventRestoreFailed = "restore_failed"
|
||
NotificationEventVerifyFailed = "verify_failed"
|
||
NotificationEventSLAViolation = "sla_violation"
|
||
// NotificationEventStorageUnhealthy 存储目标连接失败(后台健康扫描触发)。
|
||
NotificationEventStorageUnhealthy = "storage_unhealthy"
|
||
// NotificationEventReplicationFailed 备份复制失败。
|
||
NotificationEventReplicationFailed = "replication_failed"
|
||
// NotificationEventAgentOutdated Agent 版本落后 Master,建议升级。
|
||
NotificationEventAgentOutdated = "agent_outdated"
|
||
// NotificationEventStorageCapacity 存储目标使用率超过预警阈值(85%)。
|
||
NotificationEventStorageCapacity = "storage_capacity_warning"
|
||
)
|
||
|
||
type Notification struct {
|
||
ID uint `gorm:"primaryKey" json:"id"`
|
||
Type string `gorm:"size:20;index;not null" json:"type"`
|
||
Name string `gorm:"size:100;uniqueIndex;not null" json:"name"`
|
||
ConfigCiphertext string `gorm:"column:config_ciphertext;type:text;not null" json:"-"`
|
||
Enabled bool `gorm:"not null;default:true" json:"enabled"`
|
||
OnSuccess bool `gorm:"column:on_success;not null;default:false" json:"onSuccess"`
|
||
OnFailure bool `gorm:"column:on_failure;not null;default:true" json:"onFailure"`
|
||
// EventTypes 逗号分隔,订阅的事件类型。
|
||
// 空 = 仅监听备份成功/失败(兼容旧配置);非空则严格按订阅触发。
|
||
EventTypes string `gorm:"column:event_types;size:500" json:"eventTypes"`
|
||
CreatedAt time.Time `json:"createdAt"`
|
||
UpdatedAt time.Time `json:"updatedAt"`
|
||
}
|
||
|
||
func (Notification) TableName() string {
|
||
return "notifications"
|
||
}
|