package cleanup import ( "context" "downloader/internal/core/ports/download_request" "go.uber.org/zap" "time" ) type cleanUp struct { repository download_request.Repository logger *zap.SugaredLogger } func New(repository download_request.Repository, logger *zap.SugaredLogger) *cleanUp { return &cleanUp{repository: repository, logger: logger} } func (c *cleanUp) RunOnSchedule() { ctx := context.TODO() go func() { for true { requests, err := c.repository.GetOldOrStuck(ctx) if err == nil { c.logger.Debugw("Cleaning up downloads", "downloads", requests) _ = c.repository.BatchDelete(ctx, requests) } else { c.logger.Warn("could not process old or stuck in-progress jobs") } time.Sleep(time.Minute) } }() }