From 3a344bdc9c37aa604215c1ccd061f9db80167489 Mon Sep 17 00:00:00 2001 From: Max Chis Date: Thu, 1 Jan 2026 08:24:07 -0500 Subject: [PATCH] Tighten record type requirement for prerequisite --- src/api/endpoints/url/get/query.py | 1 - .../impl/data_sources/update/queries/cte.py | 2 +- src/core/tasks/url/manager.py | 9 ++++++--- src/db/models/impl/__init__.py | 3 ++- .../core/tasks/scheduled/ds_app_sync/__init__.py | 0 .../scheduled/ds_app_sync/data_sources/__init__.py | 0 .../ds_app_sync/data_sources/update/__init__.py | 0 .../ds_app_sync/data_sources/update/test_prereq.py | 13 +++++++++++++ 8 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 tests/manual/core/tasks/scheduled/ds_app_sync/__init__.py create mode 100644 tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/__init__.py create mode 100644 tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/__init__.py create mode 100644 tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/test_prereq.py diff --git a/src/api/endpoints/url/get/query.py b/src/api/endpoints/url/get/query.py index a11bbd64..d9ba9047 100644 --- a/src/api/endpoints/url/get/query.py +++ b/src/api/endpoints/url/get/query.py @@ -3,7 +3,6 @@ from sqlalchemy import select, exists, RowMapping, func from sqlalchemy.dialects.postgresql import aggregate_order_by from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import selectinload from src.api.endpoints.url.get.dto import GetURLsResponseInfo, GetURLsResponseErrorInfo, GetURLsResponseInnerInfo from src.db.client.helpers import add_standard_limit_and_offset diff --git a/src/core/tasks/scheduled/impl/sync_to_ds/impl/data_sources/update/queries/cte.py b/src/core/tasks/scheduled/impl/sync_to_ds/impl/data_sources/update/queries/cte.py index 8f0ff65e..b1c21474 100644 --- a/src/core/tasks/scheduled/impl/sync_to_ds/impl/data_sources/update/queries/cte.py +++ b/src/core/tasks/scheduled/impl/sync_to_ds/impl/data_sources/update/queries/cte.py @@ -18,7 +18,7 @@ def __init__(self): URL, URL.id == DSAppLinkDataSource.url_id, ) - .outerjoin( + .join( URLRecordType, URL.id == URLRecordType.url_id, ) diff --git a/src/core/tasks/url/manager.py b/src/core/tasks/url/manager.py index 7fc6b4e3..b3da8edd 100644 --- a/src/core/tasks/url/manager.py +++ b/src/core/tasks/url/manager.py @@ -52,9 +52,7 @@ async def _run_task(self, entry: URLTaskEntry) -> None: while meets_prereq: print(f"Running {operator.task_type.value} Task") if count > TASK_REPEAT_THRESHOLD: - message = f"Task {operator.task_type.value} has been run more than {TASK_REPEAT_THRESHOLD} times in a row. Task loop terminated." - print(message) - await self.handler.post_to_discord(message=message) + await self._alert_task_repeat_threshold_exceeded(operator) break run_info: TaskOperatorRunInfo = await operator.run_task() await self.conclude_task(run_info) @@ -63,6 +61,11 @@ async def _run_task(self, entry: URLTaskEntry) -> None: count += 1 meets_prereq = await operator.meets_task_prerequisites() + async def _alert_task_repeat_threshold_exceeded(self, operator): + message = f"Task {operator.task_type.value} has been run more than {TASK_REPEAT_THRESHOLD} times in a row. Task loop terminated." + print(message) + await self.handler.post_to_discord(message=message) + async def trigger_task_run(self) -> None: await self.task_trigger.trigger_or_rerun() diff --git a/src/db/models/impl/__init__.py b/src/db/models/impl/__init__.py index 9e679b72..5b4c9604 100644 --- a/src/db/models/impl/__init__.py +++ b/src/db/models/impl/__init__.py @@ -1,3 +1,4 @@ from .link.location_batch.sqlalchemy import LinkLocationBatch -from .link.batch_url.sqlalchemy import LinkBatchURL \ No newline at end of file +from .link.batch_url.sqlalchemy import LinkBatchURL +from .anon_session.sqlalchemy import AnonymousSession \ No newline at end of file diff --git a/tests/manual/core/tasks/scheduled/ds_app_sync/__init__.py b/tests/manual/core/tasks/scheduled/ds_app_sync/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/__init__.py b/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/__init__.py b/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/test_prereq.py b/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/test_prereq.py new file mode 100644 index 00000000..a14dc917 --- /dev/null +++ b/tests/manual/core/tasks/scheduled/ds_app_sync/data_sources/update/test_prereq.py @@ -0,0 +1,13 @@ +import pytest + +from src.core.tasks.scheduled.impl.sync_to_ds.impl.data_sources.update.queries.prereq import \ + DSAppSyncDataSourcesUpdatePrerequisitesQueryBuilder +from src.db.client.async_ import AsyncDatabaseClient + + +@pytest.mark.asyncio +async def test_prereq(adb_client_test: AsyncDatabaseClient): + await adb_client_test.run_query_builder( + DSAppSyncDataSourcesUpdatePrerequisitesQueryBuilder() + ) +