generated from john/python-template
moved models to db pkg
This commit is contained in:
@@ -10,8 +10,8 @@ from sqlmodel import SQLModel
|
|||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||||
|
|
||||||
from ..models import Job
|
from .models import Job
|
||||||
from ..models import JobStatus
|
from .models import JobStatus
|
||||||
from .runtime import get_engine
|
from .runtime import get_engine
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -31,7 +31,7 @@ async def get_next_queued_job(*, session: AsyncSession) -> Job | None:
|
|||||||
async def create_all(*, engine: AsyncEngine | None = None) -> None:
|
async def create_all(*, engine: AsyncEngine | None = None) -> None:
|
||||||
"""Create all tables on the selected engine."""
|
"""Create all tables on the selected engine."""
|
||||||
# Import models so SQLModel metadata is fully registered before bootstrap.
|
# Import models so SQLModel metadata is fully registered before bootstrap.
|
||||||
from transcription import models as _models # noqa: F401
|
from transcription.db import models as _models # noqa: F401
|
||||||
|
|
||||||
active_engine = engine or get_engine()
|
active_engine = engine or get_engine()
|
||||||
async with active_engine.begin() as connection:
|
async with active_engine.begin() as connection:
|
||||||
@@ -68,12 +68,8 @@ def _ensure_sqlite_compat_columns(connection: Connection) -> None:
|
|||||||
break
|
break
|
||||||
if not has_unique_source:
|
if not has_unique_source:
|
||||||
connection.execute(
|
connection.execute(
|
||||||
text(
|
text("CREATE UNIQUE INDEX IF NOT EXISTS ux_revision_source_id ON revision(source_id)")
|
||||||
"CREATE UNIQUE INDEX IF NOT EXISTS "
|
|
||||||
"ux_revision_source_id ON revision(source_id)"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Applied SQLite compatibility schema patch "
|
"Applied SQLite compatibility schema patch table=revision unique_index=ux_revision_source_id"
|
||||||
"table=revision unique_index=ux_revision_source_id"
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ from sqlalchemy.orm import selectinload
|
|||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||||
|
|
||||||
|
from ..db.models import Document
|
||||||
from ..errors import AppError
|
from ..errors import AppError
|
||||||
from ..errors import ErrorCategory
|
from ..errors import ErrorCategory
|
||||||
from ..models import Document
|
|
||||||
from .base import ServiceBase
|
from .base import ServiceBase
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ from sqlalchemy.orm import selectinload
|
|||||||
from sqlmodel import select
|
from sqlmodel import select
|
||||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||||
|
|
||||||
from ..models import Job
|
from ..db.models import Job
|
||||||
from ..models import JobStatus
|
from ..db.models import JobStatus
|
||||||
from ..models import Source
|
from ..db.models import Source
|
||||||
from .base import ServiceBase
|
from .base import ServiceBase
|
||||||
|
|
||||||
|
|
||||||
@@ -170,11 +170,7 @@ class JobService(ServiceBase):
|
|||||||
``stale_before`` are considered stale and re-queued.
|
``stale_before`` are considered stale and re-queued.
|
||||||
"""
|
"""
|
||||||
async with self._session_scope(session) as _session:
|
async with self._session_scope(session) as _session:
|
||||||
query = (
|
query = select(Job).where(Job.status == JobStatus.PROCESSING).where(Job.date_updated < stale_before)
|
||||||
select(Job)
|
|
||||||
.where(Job.status == JobStatus.PROCESSING)
|
|
||||||
.where(Job.date_updated < stale_before)
|
|
||||||
)
|
|
||||||
stale_jobs = (await _session.exec(query)).all()
|
stale_jobs = (await _session.exec(query)).all()
|
||||||
if not stale_jobs:
|
if not stale_jobs:
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ from transcription.config import get_settings
|
|||||||
from transcription.errors import AppError
|
from transcription.errors import AppError
|
||||||
from transcription.errors import ErrorCategory
|
from transcription.errors import ErrorCategory
|
||||||
|
|
||||||
from ..models import Document
|
from ..db.models import Document
|
||||||
from ..models import Job
|
from ..db.models import Job
|
||||||
from ..models import Source
|
from ..db.models import Source
|
||||||
from .documents import UploadJobResult
|
from .documents import UploadJobResult
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ from sqlmodel.ext.asyncio.session import AsyncSession
|
|||||||
|
|
||||||
from transcription.config import Settings
|
from transcription.config import Settings
|
||||||
from transcription.config import get_settings
|
from transcription.config import get_settings
|
||||||
|
from transcription.db.models import Job
|
||||||
|
from transcription.db.models import Revision
|
||||||
|
from transcription.db.models import Source
|
||||||
from transcription.errors import AppError
|
from transcription.errors import AppError
|
||||||
from transcription.errors import ErrorCategory
|
from transcription.errors import ErrorCategory
|
||||||
from transcription.models import Job
|
|
||||||
from transcription.models import Revision
|
|
||||||
from transcription.models import Source
|
|
||||||
from transcription.providers import ProviderAuthError
|
from transcription.providers import ProviderAuthError
|
||||||
from transcription.providers import ProviderError
|
from transcription.providers import ProviderError
|
||||||
from transcription.providers import ProviderResponseError
|
from transcription.providers import ProviderResponseError
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ from sqlmodel.ext.asyncio.session import AsyncSession
|
|||||||
|
|
||||||
from ..config import Settings
|
from ..config import Settings
|
||||||
from ..config import get_settings
|
from ..config import get_settings
|
||||||
|
from ..db.models import Job
|
||||||
|
from ..db.models import JobStatus
|
||||||
|
from ..db.models import Source
|
||||||
from ..errors import AppError
|
from ..errors import AppError
|
||||||
from ..errors import ErrorCategory
|
from ..errors import ErrorCategory
|
||||||
from ..errors import classify_unexpected_error
|
from ..errors import classify_unexpected_error
|
||||||
from ..errors import format_error_detail
|
from ..errors import format_error_detail
|
||||||
from ..models import Job
|
|
||||||
from ..models import JobStatus
|
|
||||||
from ..models import Source
|
|
||||||
from ..providers import TranscriptionResult
|
from ..providers import TranscriptionResult
|
||||||
from . import ServiceBundle
|
from . import ServiceBundle
|
||||||
from .transcription import DEFAULT_PROMPT_FILE
|
from .transcription import DEFAULT_PROMPT_FILE
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from uuid import uuid4
|
|||||||
from nicegui import ui
|
from nicegui import ui
|
||||||
|
|
||||||
from transcription.config import get_settings
|
from transcription.config import get_settings
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
|
|
||||||
PANGOZOOM_CDN_URL = "https://unpkg.com/@panzoom/[email protected]/dist/panzoom.min.js"
|
PANGOZOOM_CDN_URL = "https://unpkg.com/@panzoom/[email protected]/dist/panzoom.min.js"
|
||||||
UPLOADS_URL_PREFIX = "/uploads"
|
UPLOADS_URL_PREFIX = "/uploads"
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import logging
|
|||||||
|
|
||||||
from nicegui import ui
|
from nicegui import ui
|
||||||
|
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import Revision
|
from transcription.db.models import Revision
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
from transcription.ui.components.document_panzoom import render_document_panzoom
|
from transcription.ui.components.document_panzoom import render_document_panzoom
|
||||||
from transcription.ui.components.transcript import render_original_transcription_card
|
from transcription.ui.components.transcript import render_original_transcription_card
|
||||||
from transcription.ui.components.transcript import render_revision_row
|
from transcription.ui.components.transcript import render_revision_row
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ from typing import Any
|
|||||||
|
|
||||||
from nicegui import ui
|
from nicegui import ui
|
||||||
|
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import Revision
|
from transcription.db.models import Revision
|
||||||
|
|
||||||
type RevisionAction = Callable[[Revision], Awaitable[None] | None]
|
type RevisionAction = Callable[[Revision], Awaitable[None] | None]
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ from fastapi import Request
|
|||||||
from nicegui import ui
|
from nicegui import ui
|
||||||
|
|
||||||
from transcription.app_state import resolve_session_factory
|
from transcription.app_state import resolve_session_factory
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
from transcription.services.jobs import JobService
|
from transcription.services.jobs import JobService
|
||||||
from transcription.services.transcription import TranscriptionService
|
from transcription.services.transcription import TranscriptionService
|
||||||
from transcription.ui.components.app_shell import render_navigation_header
|
from transcription.ui.components.app_shell import render_navigation_header
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ from pathlib import Path
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from transcription.config import Settings
|
from transcription.config import Settings
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.providers.base import TranscriptionResult
|
from transcription.providers.base import TranscriptionResult
|
||||||
from transcription.services.store import create_upload_job
|
from transcription.services.store import create_upload_job
|
||||||
from transcription.worker import process_next_queued_job
|
from transcription.worker import process_next_queued_job
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ from uuid import uuid4
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from transcription.models import Document
|
from transcription.db.models import Document
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
from transcription.services.documents import DocumentService
|
from transcription.services.documents import DocumentService
|
||||||
from transcription.services.jobs import JobService
|
from transcription.services.jobs import JobService
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ from uuid import uuid4
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from transcription.models import Document
|
from transcription.db.models import Document
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
from transcription.services.documents import DocumentService
|
from transcription.services.documents import DocumentService
|
||||||
from transcription.services.jobs import JobService
|
from transcription.services.jobs import JobService
|
||||||
from transcription.services.transcription import TranscriptionService
|
from transcription.services.transcription import TranscriptionService
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ from uuid import uuid4
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from transcription.config import Settings
|
from transcription.config import Settings
|
||||||
from transcription.models import Document
|
from transcription.db.models import Document
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
from transcription.services import ServiceBundle
|
from transcription.services import ServiceBundle
|
||||||
from transcription.services.workflows import process_queued_job
|
from transcription.services.workflows import process_queued_job
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ from uuid import UUID
|
|||||||
import pytest
|
import pytest
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
|
|
||||||
from transcription.models import Document
|
from transcription.db.models import Document
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Revision
|
from transcription.db.models import Revision
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
|
|
||||||
|
|
||||||
def _make_document(**overrides) -> Document:
|
def _make_document(**overrides) -> Document:
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ from transcription.config import _settings
|
|||||||
from transcription.db import create_all
|
from transcription.db import create_all
|
||||||
from transcription.db import get_session
|
from transcription.db import get_session
|
||||||
from transcription.db import initialize_database_runtime
|
from transcription.db import initialize_database_runtime
|
||||||
from transcription.models import Document
|
from transcription.db.models import Document
|
||||||
from transcription.models import Job
|
from transcription.db.models import Job
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
from transcription.models import Revision
|
from transcription.db.models import Revision
|
||||||
from transcription.models import Source
|
from transcription.db.models import Source
|
||||||
|
|
||||||
RevisionSeed = str
|
RevisionSeed = str
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from uuid import uuid4
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from transcription.models import JobStatus
|
from transcription.db.models import JobStatus
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.integration
|
@pytest.mark.integration
|
||||||
|
|||||||
Reference in New Issue
Block a user