Files
smpark.in/Backend/paste/expiry.go
Stephen Parkinson 3934751615
Some checks failed
Build and Deploy Website / build (push) Failing after 2m46s
add paste functionality
2026-02-27 23:38:14 -08:00

43 lines
802 B
Go

package paste
import (
"context"
"log/slog"
"time"
)
func StartExpiryWorker(ctx context.Context, s *Store, interval time.Duration) {
ticker := time.NewTicker(interval)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return
case <-ticker.C:
deleteExpired(s)
}
}
}
func deleteExpired(s *Store) {
var expired []string
err := s.ForEach(func(p *Paste) error {
if p.ExpiresAt != nil && time.Now().After(*p.ExpiresAt) {
expired = append(expired, p.ID)
}
return nil
})
if err != nil {
slog.Error("expiry scan error", "err", err)
return
}
for _, id := range expired {
if err := s.Delete(id); err != nil {
slog.Error("expiry delete error", "id", id, "err", err)
}
}
if len(expired) > 0 {
slog.Info("deleted expired pastes", "count", len(expired))
}
}