package alertcontrol import ( "context" "log/slog" "time" ) func RunExpiryLoop(ctx context.Context, store Store, interval time.Duration, logger *slog.Logger) { if store == nil || interval <= 0 { return } ticker := time.NewTicker(interval) defer ticker.Stop() job := ExpiryJob{Store: store} for { select { case <-ctx.Done(): return case <-ticker.C: if _, err := job.Run(ctx); err != nil && logger != nil { logger.Warn("alert control expiry failed", "error", err) } } } }