from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from app.auth.dependencies import get_current_user from app.models.user import User from app.schemas.profile import DescriptionUpdate from app.schemas.user import UserRead from app.utils.db import get_async_session router = APIRouter(prefix="/users", tags=["users"]) @router.get("/{username}", response_model=UserRead) async def get_user( username: str, session: AsyncSession = Depends(get_async_session), ): user = await User.get_user_by_username(username, session=session) if not user: raise HTTPException(status_code=404, detail="User not found") return UserRead.model_validate(user) @router.patch("/description") async def update_description( payload: DescriptionUpdate, user: User = Depends(get_current_user), session: AsyncSession = Depends(get_async_session), ): profile = user.profile if not profile: raise HTTPException(status_code=404, detail="Profile not found") profile.description = payload.description session.add(profile) await session.commit() await session.refresh(profile) return {"description": profile.description}