From 5a09348dedb47e07d9ec7e43ee6d69bc5bcff1d6 Mon Sep 17 00:00:00 2001 From: oib Date: Thu, 5 Mar 2026 06:30:55 +0100 Subject: [PATCH] fix: resolve sync and db query errors in Coordinator API jobs and db layers --- apps/coordinator-api/src/app/services/jobs.py | 6 +++--- apps/coordinator-api/src/app/storage/db.py | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/coordinator-api/src/app/services/jobs.py b/apps/coordinator-api/src/app/services/jobs.py index 16b00129..2c7aafc5 100644 --- a/apps/coordinator-api/src/app/services/jobs.py +++ b/apps/coordinator-api/src/app/services/jobs.py @@ -41,14 +41,14 @@ class JobService: query = select(Job).where(Job.id == job_id) if client_id: query = query.where(Job.client_id == client_id) - job = self.session.exec(query).one_or_none() + job = self.session.execute(query).scalar_one_or_none() if not job: raise KeyError("job not found") return self._ensure_not_expired(job) def list_receipts(self, job_id: str, client_id: Optional[str] = None) -> list[JobReceipt]: job = self.get_job(job_id, client_id=client_id) - receipts = self.session.exec( + receipts = self.session.scalars( select(JobReceipt) .where(JobReceipt.job_id == job.id) .order_by(JobReceipt.created_at.asc()) @@ -94,7 +94,7 @@ class JobService: .order_by(Job.requested_at.asc()) ) - jobs = self.session.exec(statement).all() + jobs = self.session.scalars(statement).all() for job in jobs: try: job = self._ensure_not_expired(job) diff --git a/apps/coordinator-api/src/app/storage/db.py b/apps/coordinator-api/src/app/storage/db.py index cfca1bb8..6d23e8ce 100644 --- a/apps/coordinator-api/src/app/storage/db.py +++ b/apps/coordinator-api/src/app/storage/db.py @@ -58,6 +58,8 @@ def get_engine() -> Engine: return _engine +from app.domain import * + def init_db() -> Engine: """Initialize database tables and ensure data directory exists.""" engine = get_engine() @@ -89,10 +91,11 @@ def session_scope() -> Generator[Session, None, None]: from fastapi import Depends from typing import Annotated -def get_session() -> Session: +def get_session(): """Get a database session.""" engine = get_engine() - return Session(engine) + with Session(engine) as session: + yield session SessionDep = Annotated[Session, Depends(get_session)]