49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package runner
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/ssdomei232/goodBaby/drivers/bilibili"
|
|
"github.com/ssdomei232/goodBaby/drivers/email"
|
|
"github.com/ssdomei232/goodBaby/drivers/github"
|
|
"github.com/ssdomei232/goodBaby/drivers/onebot"
|
|
"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 {
|
|
// 执行 rule
|
|
go executeRule(&rule)
|
|
}
|
|
}
|
|
|
|
// super switch
|
|
func executeRule(rule *model.Rule) {
|
|
switch rule.Type {
|
|
case "bilibili-dynamic":
|
|
bilibili.SendBiliDynamicMsg(rule)
|
|
case "email":
|
|
email.SendMail(rule)
|
|
case "github-make-repo-public":
|
|
github.MakeRepositoryPublic(rule)
|
|
case "onebot":
|
|
onebot.SendOneBotMsg(rule)
|
|
}
|
|
}
|