diff --git a/lib/microwaveprop/workers/qso_weather_enqueue_worker.ex b/lib/microwaveprop/workers/qso_weather_enqueue_worker.ex index db84d907..ed2bbaaf 100644 --- a/lib/microwaveprop/workers/qso_weather_enqueue_worker.ex +++ b/lib/microwaveprop/workers/qso_weather_enqueue_worker.ex @@ -22,49 +22,62 @@ defmodule Microwaveprop.Workers.QsoWeatherEnqueueWorker do end defp enqueue_weather_jobs do - qsos = Radio.unprocessed_qsos() + case Radio.unprocessed_qsos() do + [] -> + :ok - if qsos != [] do - Radio.backfill_distances(qsos) + qsos -> + Radio.backfill_distances(qsos) - jobs = build_weather_jobs(qsos) + jobs = build_weather_jobs(qsos) - if jobs != [] do - Oban.insert_all(jobs) - end + if jobs != [] do + Oban.insert_all(jobs) + end - qso_ids = Enum.map(qsos, & &1.id) - Radio.mark_weather_queued!(qso_ids) + qso_ids = Enum.map(qsos, & &1.id) + Radio.mark_weather_queued!(qso_ids) + + enqueue_weather_jobs() end end defp enqueue_hrrr_jobs do - qsos = Radio.unprocessed_hrrr_qsos() + case Radio.unprocessed_hrrr_qsos() do + [] -> + :ok - if qsos != [] do - jobs = build_hrrr_jobs(qsos) + qsos -> + jobs = build_hrrr_jobs(qsos) - if jobs != [] do - Oban.insert_all(jobs) - end + if jobs != [] do + Oban.insert_all(jobs) + end - qso_ids = Enum.map(qsos, & &1.id) - Radio.mark_hrrr_queued!(qso_ids) + qso_ids = Enum.map(qsos, & &1.id) + Radio.mark_hrrr_queued!(qso_ids) + + enqueue_hrrr_jobs() end end defp enqueue_terrain_jobs do - qsos = Radio.unprocessed_terrain_qsos() + case Radio.unprocessed_terrain_qsos() do + [] -> + :ok - if qsos != [] do - jobs = build_terrain_jobs(qsos) + qsos -> + jobs = build_terrain_jobs(qsos) - if jobs != [] do - Oban.insert_all(jobs) - end + if jobs != [] do + Oban.insert_all(jobs) + end - qso_ids = Enum.map(qsos, & &1.id) - Radio.mark_terrain_queued!(qso_ids) + qso_ids = Enum.map(qsos, & &1.id) + Radio.mark_terrain_queued!(qso_ids) + + # Continue until all QSOs are enqueued + enqueue_terrain_jobs() end end