Files
2026-05-29 22:39:50 -05:00

45 lines
805 B
Go

package cleanup
import (
"context"
"log"
"time"
"scratchbox/internal/storage"
)
type Worker struct {
store *storage.FilesystemStore
interval time.Duration
logger *log.Logger
}
func NewWorker(store *storage.FilesystemStore, interval time.Duration, logger *log.Logger) *Worker {
return &Worker{
store: store,
interval: interval,
logger: logger,
}
}
func (w *Worker) Start(ctx context.Context) {
ticker := time.NewTicker(w.interval)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return
case now := <-ticker.C:
deleted, err := w.store.DeleteExpired(now)
if err != nil {
w.logger.Printf("cleanup worker failed: %v", err)
continue
}
if deleted > 0 {
w.logger.Printf("cleanup worker removed %d expired scratches", deleted)
}
}
}
}