"""Database operations for TranscodeJob — SQLModel.""" from __future__ import annotations from typing import Optional from uuid import UUID from sqlmodel import select from .connection import get_session from .models import TranscodeJob def list_jobs(status: Optional[str] = None, source_asset_id: Optional[UUID] = None) -> list[TranscodeJob]: with get_session() as session: stmt = select(TranscodeJob) if status: stmt = stmt.where(TranscodeJob.status == status) if source_asset_id: stmt = stmt.where(TranscodeJob.source_asset_id == source_asset_id) return list(session.exec(stmt).all()) def get_job(id: UUID) -> TranscodeJob | None: with get_session() as session: return session.get(TranscodeJob, id) def create_job(**fields) -> TranscodeJob: job = TranscodeJob(**fields) with get_session() as session: session.add(job) session.commit() session.refresh(job) return job def update_job(id: UUID, **fields) -> None: with get_session() as session: job = session.get(TranscodeJob, id) if not job: return for k, v in fields.items(): setattr(job, k, v) session.commit() def update_job_fields(job_id: UUID, **fields) -> None: update_job(job_id, **fields)