Files
goodBaby/handler/runner/runner.go
T

39 lines
858 B
Go

package runner
import (
"log"
"github.com/ssdomei232/goodBaby/handler/db"
"github.com/ssdomei232/goodBaby/model"
)
// runner 执行需要被执行的 Rule
func Runner(timer *model.Timer) {
gormDB, err := db.GetGormDB()
if err != nil {
log.Printf("failed to get gorm db: %v", err)
return
}
// 1. 获取所有需要执行的 Rule
var rules []model.Rule
if err := gormDB.Where("timer_id = ?", timer.ID).Find(&rules).Error; err != nil {
log.Printf("failed to get rules: %v", err)
return
}
// 2. 执行每个 Rule
for _, rule := range rules {
go executeRule(&rule)
}
}
// executeRule 执行单个规则
func executeRule(rule *model.Rule) {
executorRegistry := GetGlobalExecutorRegistry()
if err := executorRegistry.Execute(rule); err != nil {
log.Printf("执行规则失败 [ID: %d, Type: %s]: %v", rule.ID, rule.Type, err)
}
}