Spaces:
Running
Running
| import profile | |
| from externals.databases.pg_models import CVUser | |
| from externals.databases.database import get_db | |
| from fastapi import APIRouter, Depends, status, HTTPException | |
| from interfaces.api.deps import get_current_user | |
| from services.knowledge.knowledge_setup import KnowledgeService | |
| from utils.logger import get_logger | |
| logger = get_logger("Profile API") | |
| router = APIRouter( | |
| prefix="/profile", | |
| tags=["Profile"], | |
| ) | |
| async def extract_profile( | |
| filename: str, | |
| db=Depends(get_db), | |
| current_user: CVUser = Depends(get_current_user), | |
| ): | |
| """ | |
| Extract structured profile from CV PDF | |
| """ | |
| knowledge_service = KnowledgeService( | |
| db=db, | |
| user=current_user, | |
| ) | |
| return await knowledge_service.extract.extract(filename) | |
| async def get_profile( | |
| profile_id: str, | |
| db=Depends(get_db), | |
| current_user: CVUser = Depends(get_current_user), | |
| ): | |
| """ | |
| Get extracted profile by ID | |
| """ | |
| knowledge_service = KnowledgeService(db=db, user=current_user) | |
| profile = await knowledge_service.profile.get_profile(profile_id) | |
| if not profile: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail="Profile not found", | |
| ) | |
| return profile | |
| async def get_profiles( | |
| criteria_id: str, | |
| db=Depends(get_db), | |
| current_user: CVUser = Depends(get_current_user), | |
| ): | |
| """ | |
| Get profiles based on criteria id | |
| """ | |
| knowledge_service = KnowledgeService(db=db, user=current_user) | |
| profiles = await knowledge_service.profile.get_profiles_by_criteria(criteria_id=criteria_id) | |
| logger.info(f"retrieved profiles: {profiles}") | |
| if not profiles: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail="Profiles not found", | |
| ) | |
| return profiles | |