from fastapi import APIRouter, Depends, status, UploadFile, File from ..storage.schemas import BaseBox from ..storage.models import BoxesData from ..storage.database import get_session, engine from sqlalchemy.ext.asyncio import AsyncSession from PIL import Image import io from ..processing.parse_img import parse_img router = APIRouter() @router.post("/", response_model=list[BaseBox], status_code=status.HTTP_201_CREATED) async def parse_image(image_file: UploadFile = File(...), session: AsyncSession = Depends(get_session)): contents = await image_file.read() img = Image.open(io.BytesIO(contents)) boxes_data, _ = parse_img(img) for box_data in boxes_data: db_box = BoxesData(**box_data.model_dump()) session.add(db_box) await session.commit() return boxes_data