Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, HTTPException | |
| from motor.motor_asyncio import AsyncIOMotorDatabase | |
| from src.core.database import mongo_db | |
| from src.models.mongo.cv_model import CVModel | |
| from pydantic import BaseModel, Field | |
| from typing import Optional, Dict, Any | |
| from bson import ObjectId | |
| router = APIRouter() | |
| class CVCreate(BaseModel): | |
| user_id: str | |
| parsed_data: Dict[str, Any] | |
| raw_text: Optional[str] = None | |
| upload_date: str | |
| class CVResponse(BaseModel): | |
| id: str = Field(alias="_id") | |
| user_id: str | |
| parsed_data: Dict[str, Any] | |
| raw_text: Optional[str] = None | |
| upload_date: str | |
| class Config: | |
| populate_by_name = True | |
| json_encoders = {ObjectId: str} | |
| async def create_cv(cv: CVCreate, db: AsyncIOMotorDatabase = Depends(lambda: mongo_db)): | |
| # Préparer les données pour l'insertion | |
| cv_data = cv.model_dump(exclude_unset=True) | |
| # Insérer dans MongoDB et récupérer l'ID | |
| cv_id = await CVModel.create(db, "cv", cv_data) | |
| # Créer la réponse avec l'ID | |
| response_data = { | |
| "id": cv_id, | |
| "user_id": cv.user_id, | |
| "parsed_data": cv.parsed_data, | |
| "raw_text": cv.raw_text, | |
| "upload_date": cv.upload_date | |
| } | |
| return CVResponse(**response_data) | |
| async def get_cv_by_id(cv_id: str, db: AsyncIOMotorDatabase = Depends(lambda: mongo_db)): | |
| cv = await CVModel.get(db, "cv", {"_id": cv_id}) | |
| if cv is None: | |
| raise HTTPException(status_code=404, detail="CV not found") | |
| return cv | |