fix: repair logs default seed initialization

This commit is contained in:
zxr
2026-07-21 16:31:22 +08:00
parent 6e66bad884
commit fd2bcd3893

View File

@@ -1,6 +1,10 @@
package models
import "gorm.io/gorm"
import (
"errors"
"gorm.io/gorm"
)
// GetAllModels 数据库迁移用模型列表
func GetAllModels() []interface{} {
@@ -85,13 +89,6 @@ WHERE target_event.dispatch_outbox_id = 0`
}
func seedDefaultSyslogRules(db *gorm.DB) error {
var cnt int64
if err := db.Model(&SyslogRule{}).Count(&cnt).Error; err != nil {
return err
}
if cnt > 0 {
return nil
}
rows := []SyslogRule{
{
Name: "默认-系统严重错误",
@@ -130,17 +127,39 @@ func seedDefaultSyslogRules(db *gorm.DB) error {
PolicyID: 0,
},
}
return db.Create(&rows).Error
for _, row := range rows {
var existing SyslogRule
err := db.Where("name = ?", row.Name).First(&existing).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
if err := db.Create(&row).Error; err != nil {
return err
}
continue
}
if err != nil {
return err
}
if err := db.Model(&existing).Select(
"name",
"enabled",
"priority",
"device_name_contains",
"source_match",
"keyword_regex",
"message_regex",
"alert_name",
"severity_code",
"severity_mapping_json",
"resource_uid_extract_regex",
"policy_id",
).Updates(&row).Error; err != nil {
return err
}
}
return nil
}
func seedDefaultTrapRules(db *gorm.DB) error {
var cnt int64
if err := db.Model(&TrapRule{}).Count(&cnt).Error; err != nil {
return err
}
if cnt > 0 {
return nil
}
rows := []TrapRule{
{
Name: "默认-Trap链路中断",
@@ -153,17 +172,35 @@ func seedDefaultTrapRules(db *gorm.DB) error {
PolicyID: 0,
},
}
return db.Create(&rows).Error
for _, row := range rows {
var existing TrapRule
err := db.Where("name = ?", row.Name).First(&existing).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
if err := db.Create(&row).Error; err != nil {
return err
}
continue
}
if err != nil {
return err
}
if err := db.Model(&existing).Select(
"name",
"enabled",
"priority",
"oid_prefix",
"varbind_match_regex",
"alert_name",
"severity_code",
"policy_id",
).Updates(&row).Error; err != nil {
return err
}
}
return nil
}
func seedDefaultTrapDictionary(db *gorm.DB) error {
var cnt int64
if err := db.Model(&TrapDictionaryEntry{}).Count(&cnt).Error; err != nil {
return err
}
if cnt > 0 {
return nil
}
rows := []TrapDictionaryEntry{
{
Vendor: "H3C",
@@ -192,5 +229,33 @@ func seedDefaultTrapDictionary(db *gorm.DB) error {
Enabled: true,
},
}
return db.Create(&rows).Error
for _, row := range rows {
var existing TrapDictionaryEntry
err := db.Where("oid_prefix = ?", row.OIDPrefix).First(&existing).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
if err := db.Create(&row).Error; err != nil {
return err
}
continue
}
if err != nil {
return err
}
if err := db.Model(&existing).Select(
"oid_prefix",
"vendor",
"o_id",
"name",
"title",
"description",
"severity_code",
"severity_mapping_json",
"parse_expression",
"recovery_message",
"enabled",
).Updates(&row).Error; err != nil {
return err
}
}
return nil
}