50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
"""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)
|