from fastapi import APIRouter, Depends, File, HTTPException, UploadFile, status from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_db from app.dependencies import get_current_admin, get_current_user_id from app.services.upload_service import ( upload_activity_image, upload_user_avatar, upload_user_profile_image, ) from app.services.user_service import get_user_by_id router = APIRouter() @router.post("/avatar") async def upload_avatar( file: UploadFile = File(...), current_user_id: int = Depends(get_current_user_id), session: AsyncSession = Depends(get_db), ) -> dict: user = await get_user_by_id(session, current_user_id) if user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found") try: data = await upload_user_avatar(session, user, file) except ValueError as exc: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc return {"code": 0, "message": "ok", "data": data} @router.post("/profile-image") async def upload_profile_image( file: UploadFile = File(...), current_user_id: int = Depends(get_current_user_id), session: AsyncSession = Depends(get_db), ) -> dict: user = await get_user_by_id(session, current_user_id) if user is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="User not found") try: data = await upload_user_profile_image(session, user, file) except ValueError as exc: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc return {"code": 0, "message": "ok", "data": data} @router.post("/activity-image") async def upload_activity_cover_image( file: UploadFile = File(...), current_user_id: int = Depends(get_current_user_id), ) -> dict: _ = current_user_id try: data = await upload_activity_image(file) except ValueError as exc: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc return {"code": 0, "message": "ok", "data": data}