From a6849b28b31724013706438bfee66b45006ccc87 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Wed, 22 Apr 2026 14:21:39 +0000 Subject: [PATCH] added backend funciton to functions --- .../bulk_address_uploads_functions.py | 36 +++++++++++++++++++ backend/app/db/models/bulk_address_uploads.py | 35 ++---------------- backend/bulk_address2uprn_combiner/main.py | 2 +- backend/tests/test_bulk_combiner_status.py | 6 ++-- 4 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 backend/app/db/functions/bulk_address_uploads_functions.py diff --git a/backend/app/db/functions/bulk_address_uploads_functions.py b/backend/app/db/functions/bulk_address_uploads_functions.py new file mode 100644 index 00000000..6252fe20 --- /dev/null +++ b/backend/app/db/functions/bulk_address_uploads_functions.py @@ -0,0 +1,36 @@ +from uuid import UUID +from datetime import datetime, timezone + +from sqlmodel import select + +from backend.app.db.connection import get_db_session +from backend.app.db.models.bulk_address_uploads import BulkAddressUpload + + +def set_combining_status(task_id: UUID) -> None: + now = datetime.now(timezone.utc) + with get_db_session() as session: + row = session.exec( + select(BulkAddressUpload).where(BulkAddressUpload.task_id == task_id) + ).first() + if not row: + raise ValueError(f"No bulk_address_uploads row for task_id {task_id}") + row.status = "combining" + row.updated_at = now + session.add(row) + session.commit() + + +def set_combined_output_s3_uri(task_id: UUID, s3_uri: str) -> None: + now = datetime.now(timezone.utc) + with get_db_session() as session: + row = session.exec( + select(BulkAddressUpload).where(BulkAddressUpload.task_id == task_id) + ).first() + if not row: + raise ValueError(f"No bulk_address_uploads row for task_id {task_id}") + row.combined_output_s3_uri = s3_uri + row.status = "awaiting_review" + row.updated_at = now + session.add(row) + session.commit() diff --git a/backend/app/db/models/bulk_address_uploads.py b/backend/app/db/models/bulk_address_uploads.py index a136e77b..0d87ff47 100644 --- a/backend/app/db/models/bulk_address_uploads.py +++ b/backend/app/db/models/bulk_address_uploads.py @@ -1,12 +1,10 @@ from typing import Optional from uuid import UUID, uuid4 -from datetime import datetime, timezone +from datetime import datetime from sqlalchemy import Column from sqlalchemy.dialects.postgresql import JSONB -from sqlmodel import SQLModel, Field, select - -from backend.app.db.connection import get_db_session +from sqlmodel import SQLModel, Field class BulkAddressUpload(SQLModel, table=True): @@ -24,32 +22,3 @@ class BulkAddressUpload(SQLModel, table=True): combined_output_s3_uri: Optional[str] = Field(default=None) created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow) - - -def set_combining_status(task_id: UUID) -> None: - now = datetime.now(timezone.utc) - with get_db_session() as session: - row = session.exec( - select(BulkAddressUpload).where(BulkAddressUpload.task_id == task_id) - ).first() - if not row: - raise ValueError(f"No bulk_address_uploads row for task_id {task_id}") - row.status = "combining" - row.updated_at = now - session.add(row) - session.commit() - - -def set_combined_output_s3_uri(task_id: UUID, s3_uri: str) -> None: - now = datetime.now(timezone.utc) - with get_db_session() as session: - row = session.exec( - select(BulkAddressUpload).where(BulkAddressUpload.task_id == task_id) - ).first() - if not row: - raise ValueError(f"No bulk_address_uploads row for task_id {task_id}") - row.combined_output_s3_uri = s3_uri - row.status = "awaiting_review" - row.updated_at = now - session.add(row) - session.commit() diff --git a/backend/bulk_address2uprn_combiner/main.py b/backend/bulk_address2uprn_combiner/main.py index 85e0c5cb..44f0b3f9 100644 --- a/backend/bulk_address2uprn_combiner/main.py +++ b/backend/bulk_address2uprn_combiner/main.py @@ -8,7 +8,7 @@ from datetime import datetime, timezone from utils.logger import setup_logger from backend.utils.subtasks import subtask_handler -from backend.app.db.models.bulk_address_uploads import ( +from backend.app.db.functions.bulk_address_uploads_functions import ( set_combined_output_s3_uri, set_combining_status, ) diff --git a/backend/tests/test_bulk_combiner_status.py b/backend/tests/test_bulk_combiner_status.py index c760f734..5ac75037 100644 --- a/backend/tests/test_bulk_combiner_status.py +++ b/backend/tests/test_bulk_combiner_status.py @@ -5,12 +5,12 @@ import pytest from sqlalchemy import create_engine from sqlmodel import Session, SQLModel -from backend.app.db.models import bulk_address_uploads as module -from backend.app.db.models.bulk_address_uploads import ( - BulkAddressUpload, +from backend.app.db.functions import bulk_address_uploads_functions as module +from backend.app.db.functions.bulk_address_uploads_functions import ( set_combined_output_s3_uri, set_combining_status, ) +from backend.app.db.models.bulk_address_uploads import BulkAddressUpload @pytest.fixture(scope="function")