import uuid from fastapi import APIRouter, Depends from pydantic import BaseModel from sqlalchemy.ext.asyncio import AsyncSession from ...auth import verify_token from ...outbound.postgres.database import get_db from ...outbound.postgres.repositories import learnable_language_repository router = APIRouter(prefix="/user_profile", tags=["bff"]) class LearnableLanguageItem(BaseModel): id: str source_language: str target_language: str proficiencies: list[str] class UserProfileResponse(BaseModel): learnable_languages: list[LearnableLanguageItem] @router.get("", response_model=UserProfileResponse, status_code=200) async def get_user_profile( db: AsyncSession = Depends(get_db), token_data: dict = Depends(verify_token), ) -> UserProfileResponse: languages = await learnable_language_repository.list_for_user( db, user_id=uuid.UUID(token_data["sub"]) ) return UserProfileResponse( learnable_languages=[ LearnableLanguageItem( id=lang.id, source_language=lang.source_language, target_language=lang.target_language, proficiencies=lang.proficiencies, ) for lang in languages ] )