people-reading/backend/app/api/v1/endpoints/uploads.py
2026-05-11 23:26:11 +08:00

33 lines
1.1 KiB
Python

from fastapi import APIRouter, Depends, File, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.core.security import get_current_user
from app.models.uploaded_image import UploadedImage
from app.models.user import User
from app.schemas.upload import UploadResponse
from app.services.image_service import ImageService
router = APIRouter()
@router.post("/palm", response_model=UploadResponse)
async def upload_palm_image(
file: UploadFile = File(...),
user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db),
):
storage_key, size_bytes, expires_at, quality_check = await ImageService().validate_and_store(file, user.id)
image = UploadedImage(
user_id=user.id,
storage_key=storage_key,
original_filename=file.filename or "palm",
content_type=file.content_type or "application/octet-stream",
size_bytes=size_bytes,
expires_at=expires_at,
)
db.add(image)
await db.flush()
await db.refresh(image)
return UploadResponse(image_id=image.id, expires_at=image.expires_at, quality_check=quality_check)