fix: restore CCTV and Telegram map visibility

This commit is contained in:
BigBodyCobain
2026-08-23 19:28:40 -06:00
parent ae87fc6bfb
commit 2461756da4
5 changed files with 60 additions and 3 deletions
+3
View File
@@ -299,6 +299,9 @@ class BaseCCTVIngestor(ABC):
pass
def ingest(self):
# Ingestors may run independently (including from worker threads), so
# make sure a fresh checkout has both the directory and schema ready.
init_db()
conn = sqlite3.connect(str(DB_PATH))
try:
cameras = self.fetch_data()
+7
View File
@@ -51,8 +51,15 @@ def _instant_fetch(key: str) -> None:
def _slow_fetch(key: str) -> None:
if key == "cctv":
from services.cctv_pipeline import get_camera_count, run_all_ingestors
from services.fetchers.infrastructure import fetch_cctv
# A fresh checkout can have an empty SQLite catalog even though the
# public camera feeds are available. Seed it the first time CCTV is
# enabled; otherwise the layer stays ON with zero map records until a
# later scheduler cycle happens to run.
if get_camera_count() == 0:
run_all_ingestors()
fetch_cctv()
logger.info("CCTV loaded (layer enabled)")
return
@@ -56,3 +56,35 @@ def test_refresh_cctv_runs_on_slow_executor():
assert slow_exec.submit.call_args[0][1] == ("cctv",)
active_layers["cctv"] = before.get("cctv", False)
def test_cctv_enable_seeds_empty_catalog_before_loading():
"""An empty CCTV DB must trigger the public ingestors on first enable."""
from services.layer_enable_refresh import _slow_fetch
with (
patch("services.cctv_pipeline.get_camera_count", return_value=0) as count,
patch("services.cctv_pipeline.run_all_ingestors") as seed,
patch("services.fetchers.infrastructure.fetch_cctv") as fetch_cctv,
):
_slow_fetch("cctv")
count.assert_called_once()
seed.assert_called_once()
fetch_cctv.assert_called_once()
def test_cctv_enable_reuses_nonempty_catalog():
"""A populated CCTV DB should stay fast and avoid re-seeding on enable."""
from services.layer_enable_refresh import _slow_fetch
with (
patch("services.cctv_pipeline.get_camera_count", return_value=12) as count,
patch("services.cctv_pipeline.run_all_ingestors") as seed,
patch("services.fetchers.infrastructure.fetch_cctv") as fetch_cctv,
):
_slow_fetch("cctv")
count.assert_called_once()
seed.assert_not_called()
fetch_cctv.assert_called_once()