From ce4253f4126cfbddeba473927f8b0213dfe83596 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Mon, 30 Mar 2026 10:11:34 -0500 Subject: [PATCH] Loop enqueue workers until all unprocessed QSOs are covered Previously each run only enqueued 500 QSOs (the query limit). Now weather, HRRR, and terrain enqueue functions recurse until no unprocessed QSOs remain. --- .../workers/qso_weather_enqueue_worker.ex | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) 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