You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

24 lines
950 B

from fastapi import APIRouter, Depends
from app.api.dependencies import get_upload_service
from app.schemas.file import FileSummary
from app.schemas.upload import FinalizeUploadRequest, FinalizeUploadResponse, UploadSummary
from app.services.upload_service import FinalizeUploadInput, UploadService
router = APIRouter()
@router.post("/{upload_id}/finalize", response_model=FinalizeUploadResponse)
async def finalize_upload(
upload_id: str,
payload: FinalizeUploadRequest,
service: UploadService = Depends(get_upload_service),
) -> FinalizeUploadResponse:
upload_session, file_entry = await service.finalize_upload(
upload_id,
FinalizeUploadInput(directory_id=payload.directory_id, filename=payload.filename),
)
return FinalizeUploadResponse(
upload=UploadSummary.model_validate(upload_session, from_attributes=True),
file=FileSummary.model_validate(file_entry, from_attributes=True),
)