DealDocumentScreening/src/contract_check/api/routes/documents.py
febux 2fe54ffd86 Phase 2 - Raw SQL migration, pytest-cov coverage gate, CI branch
triggers + coverage,  Dead tooling & config drift
2026-08-24 00:45:39 +03:00

27 lines
896 B
Python

"""Document upload endpoint: reserve credit, store in MinIO, enqueue to RabbitMQ."""
from __future__ import annotations
from typing import Annotated
from fastapi import APIRouter, File, UploadFile, status
from ...core.logging import get_logger
from ..deps import AsyncSessionDep, CurrentUserDep, PublisherDep, StorageDep
from ..schemas import DocumentUploadResponse
from ..services import upload_and_enqueue
log = get_logger(__name__)
router = APIRouter(prefix="/api/v1/documents", tags=["documents"])
@router.post("", response_model=DocumentUploadResponse, status_code=status.HTTP_202_ACCEPTED)
async def upload_document(
session: AsyncSessionDep,
storage: StorageDep,
publisher: PublisherDep,
user: CurrentUserDep,
file: Annotated[UploadFile, File()],
) -> DocumentUploadResponse:
return await upload_and_enqueue(session, storage, publisher, user.user_id, file)