"""File upload endpoints.""" from __future__ import annotations from fastapi import APIRouter, Depends, File, UploadFile from app.middleware.auth import get_current_user from app.services.upload_service import UploadService router = APIRouter(prefix="/uploads", tags=["Uploads"]) @router.post("/image") async def upload_image( file: UploadFile = File(...), user: dict = Depends(get_current_user), ): """Upload an image and return its public URL.""" contents = await file.read() svc = UploadService() url = svc.upload_image( file_bytes=contents, content_type=file.content_type or "image/jpeg", folder=f"users/{user['id']}", ) return {"url": url} @router.post("/images") async def upload_multiple_images( files: list[UploadFile] = File(...), user: dict = Depends(get_current_user), ): """Upload multiple images and return their public URLs.""" svc = UploadService() urls = [] for f in files: contents = await f.read() url = svc.upload_image( file_bytes=contents, content_type=f.content_type or "image/jpeg", folder=f"users/{user['id']}", ) urls.append(url) return {"urls": urls} @router.delete("/") async def delete_image(url: str, user: dict = Depends(get_current_user)): """Delete an image by URL.""" svc = UploadService() success = svc.delete_image(url) return {"deleted": success}