package fetcher import ( "context" "fmt" "log/slog" "sync" "time" "git.avsdev.uk/Go/job-search/internal/config" "git.avsdev.uk/Go/job-search/internal/util" ) var ErrNoNewReleases = fmt.Errorf("%w: no new releases", util.ErrWorkerNoWork) func Run( ctx context.Context, conf *config.JobSearchConfig, since time.Time, ) { var wg sync.WaitGroup start := func( name string, run func(context.Context, *config.JobSearchConfig, time.Time) error, ) { wg.Add(1) go func() { defer wg.Done() if err := run(ctx, conf, since); err != nil { slog.Error("source stopped", "source", name, "err", err) } }() } if conf.Sources.FindATender.Enabled { start("FindATender", runFindAOpportunity) } if conf.Sources.FTSMock.Enabled { start("FTSMock", runFTSMock) } if conf.Sources.Sleeper.Enabled { start("Sleeper", runSleeper) } wg.Wait() }