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
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),
|
|
)
|
|
|