feat: expand import ingestion workflow with staging previews, transactional commits, and new API tests

This commit is contained in:
2025-11-10 10:14:42 +01:00
parent 609b0d779f
commit b1a0153a8d
3 changed files with 87 additions and 1 deletions

View File

@@ -11,12 +11,14 @@ from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import StaticPool
from config.database import Base
from dependencies import get_auth_session, get_unit_of_work
from dependencies import get_auth_session, get_import_ingestion_service, get_unit_of_work
from models import User
from routes.auth import router as auth_router
from routes.dashboard import router as dashboard_router
from routes.projects import router as projects_router
from routes.scenarios import router as scenarios_router
from routes.imports import router as imports_router
from services.importers import ImportIngestionService
from services.unit_of_work import UnitOfWork
from services.session import AuthSession, SessionTokens
@@ -51,6 +53,7 @@ def app(session_factory: sessionmaker) -> FastAPI:
application.include_router(dashboard_router)
application.include_router(projects_router)
application.include_router(scenarios_router)
application.include_router(imports_router)
def _override_uow() -> Iterator[UnitOfWork]:
with UnitOfWork(session_factory=session_factory) as uow:
@@ -58,6 +61,18 @@ def app(session_factory: sessionmaker) -> FastAPI:
application.dependency_overrides[get_unit_of_work] = _override_uow
def _ingestion_uow_factory() -> UnitOfWork:
return UnitOfWork(session_factory=session_factory)
ingestion_service = ImportIngestionService(_ingestion_uow_factory)
def _override_ingestion_service() -> ImportIngestionService:
return ingestion_service
application.dependency_overrides[
get_import_ingestion_service
] = _override_ingestion_service
with UnitOfWork(session_factory=session_factory) as uow:
assert uow.users is not None
uow.ensure_default_roles()