package database import ( "context" "log/slog" "os" "time" ) // NewTestRetentionReaper builds a RetentionReaper backed by the given // main database and per-webhook database manager, without the fx // lifecycle. Intended for tests. func NewTestRetentionReaper( db *Database, mgr *WebhookDBManager, ) *RetentionReaper { return &RetentionReaper{ db: db, dbManager: mgr, log: slog.New(slog.NewTextHandler( os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}, )), interval: time.Hour, } } // ExportSweep runs a single retention sweep synchronously for tests. func (r *RetentionReaper) ExportSweep(ctx context.Context) { r.sweep(ctx) }