package jobs import ( "context" "os" "time" . "github.com/riverqueue/river" log "github.com/sirupsen/logrus" _ "go.ipao.vip/atom" "go.ipao.vip/atom/contracts" ) var _ contracts.JobArgs = (*RemoveDownloadedVideo)(nil) type RemoveDownloadedVideo struct { FilePath string `json:"file_path"` } func (s RemoveDownloadedVideo) InsertOpts() InsertOpts { return InsertOpts{ Queue: QueueDefault, Priority: PriorityDefault, ScheduledAt: time.Now().Add(time.Minute * 10), } } func (s RemoveDownloadedVideo) Kind() string { return "remove_downloaded_video" } func (a RemoveDownloadedVideo) UniqueID() string { return a.Kind() } var _ Worker[RemoveDownloadedVideo] = (*RemoveDownloadedVideoWorker)(nil) // @provider(job) type RemoveDownloadedVideoWorker struct { WorkerDefaults[RemoveDownloadedVideo] } func (w *RemoveDownloadedVideoWorker) NextRetry(job *Job[RemoveDownloadedVideo]) time.Time { return time.Now().Add(30 * time.Second) } func (w *RemoveDownloadedVideoWorker) Work(ctx context.Context, job *Job[RemoveDownloadedVideo]) error { log := log.WithField("job", job.Args.Kind()) log.Infof("[Start] Working on job with strings: %+v", job.Args) defer log.Infof("[End] Finished %s", job.Args.Kind()) if err := os.Remove(job.Args.FilePath); err != nil { log.Errorf("Error removing file: %v", err) return err } return nil }