feat(app): wire acp_events_purge runner into jobs scheduler

This commit is contained in:
2026-05-07 17:47:50 +08:00
parent 4c19ce29ca
commit faebfc3135
5 changed files with 40 additions and 0 deletions
+16
View File
@@ -373,6 +373,8 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
log)
jobReaperRunner := runners.NewJobReaper(jobsRepo, cfg.Jobs.JobReaper.LeaseTimeout, log)
jobPurgeRunner := runners.NewJobPurge(jobsRepo, cfg.Jobs.JobPurge.CompletedRetention, log)
acpEventsPurgeRunner := runners.NewAcpEventsPurge(
acpEventsPurgeAdapter{repo: acpRepo}, cfg.Jobs.AcpEventsPurge.Retention, log)
deadLetterFn := func(ctx context.Context, job jobs.Job, herr error) {
errMsg := herr.Error()
@@ -443,6 +445,11 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
Interval: cfg.Jobs.JobPurge.Interval,
CompletedRetention: cfg.Jobs.JobPurge.CompletedRetention,
},
AcpEventsPurge: jobs.AcpEventsPurgeConfig{
Enabled: cfg.Jobs.AcpEventsPurge.Enabled,
Interval: cfg.Jobs.AcpEventsPurge.Interval,
Retention: cfg.Jobs.AcpEventsPurge.Retention,
},
}, jobs.ModuleDeps{
Repo: jobsRepo,
Handlers: map[jobs.JobType]jobs.Handler{
@@ -454,6 +461,7 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
"attachment_cleanup": attCleanupRunner.Run,
"job_reaper": jobReaperRunner.Run,
"job_purge": jobPurgeRunner.Run,
"acp_events_purge": acpEventsPurgeRunner.Run,
},
Clock: clock.Real(),
Log: log,
@@ -803,3 +811,11 @@ type dispatcherAdapter struct{ d *notify.Dispatcher }
func (a dispatcherAdapter) Dispatch(ctx context.Context, msg notify.Message) error {
return a.d.Dispatch(ctx, msg)
}
// acpEventsPurgeAdapter exposes acp.Repository.PurgeEventsBefore as the narrow
// interface required by runners.AcpEventsPurge.
type acpEventsPurgeAdapter struct{ repo acp.Repository }
func (a acpEventsPurgeAdapter) PurgeEventsBefore(ctx context.Context, before time.Time) (int64, error) {
return a.repo.PurgeEventsBefore(ctx, before)
}