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.feedback_model import FeedbackModel | |
| from pydantic import BaseModel, Field | |
| from typing import Optional, Dict, Any | |
| from bson import ObjectId | |
| router = APIRouter() | |
| class FeedbackCreate(BaseModel): | |
| user_id: str | |
| interview_id: str | |
| feedback_content: Dict[str, Any] | |
| feedback_date: str | |
| class FeedbackResponse(BaseModel): | |
| id: str = Field(alias="_id") | |
| user_id: str | |
| interview_id: str | |
| feedback_content: Dict[str, Any] | |
| feedback_date: str | |
| class Config: | |
| populate_by_name = True | |
| json_encoders = {ObjectId: str} | |
| async def create_feedback(feedback: FeedbackCreate, db: AsyncIOMotorDatabase = Depends(lambda: mongo_db)): | |
| feedback_entry = FeedbackModel(**feedback.model_dump(by_alias=True)) | |
| feedback_id = await FeedbackModel.create(db, FeedbackModel.collection_name, feedback_entry.model_dump(exclude_unset=True)) | |
| feedback_entry.id = feedback_id | |
| return feedback_entry | |
| async def get_feedback_by_id(feedback_id: str, db: AsyncIOMotorDatabase = Depends(lambda: mongo_db)): | |
| feedback = await FeedbackModel.get(db, FeedbackModel.collection_name, {"_id": feedback_id}) | |
| if feedback is None: | |
| raise HTTPException(status_code=404, detail="Feedback not found") | |
| return feedback | |