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.
This commit is contained in:
Graham McIntire 2026-03-30 10:11:34 -05:00
parent fdc2a31c77
commit ce4253f412
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -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