2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 07:57:21 +08:00
Files
panel/internal/job/job.go
2025-01-02 21:52:31 +08:00

51 lines
1.0 KiB
Go

package job
import (
"log/slog"
"github.com/google/wire"
"github.com/robfig/cron/v3"
"gorm.io/gorm"
"github.com/tnb-labs/panel/internal/biz"
)
var ProviderSet = wire.NewSet(NewJobs)
type Jobs struct {
db *gorm.DB
log *slog.Logger
setting biz.SettingRepo
cert biz.CertRepo
backup biz.BackupRepo
cache biz.CacheRepo
task biz.TaskRepo
}
func NewJobs(db *gorm.DB, log *slog.Logger, setting biz.SettingRepo, cert biz.CertRepo, backup biz.BackupRepo, cache biz.CacheRepo, task biz.TaskRepo) *Jobs {
return &Jobs{
db: db,
log: log,
setting: setting,
cert: cert,
backup: backup,
cache: cache,
task: task,
}
}
func (r *Jobs) Register(c *cron.Cron) error {
if _, err := c.AddJob("* * * * *", NewMonitoring(r.db, r.log, r.setting)); err != nil {
return err
}
if _, err := c.AddJob("0 4 * * *", NewCertRenew(r.db, r.log, r.cert)); err != nil {
return err
}
if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.db, r.log, r.backup, r.cache, r.task, r.setting)); err != nil {
return err
}
return nil
}