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)