Spaces:
Runtime error
Runtime error
| import logging | |
| from typing import Annotated | |
| from fastapi import APIRouter, Depends | |
| from starlette import status | |
| from common.exceptions import FeedbackNotFoundException, LogNotFoundException | |
| from components.dbo.models.feedback import Feedback | |
| from components.dbo.models.log import Log | |
| from schemas.feedback import FeedbackCreate | |
| import common.dependencies as DI | |
| from sqlalchemy.orm import sessionmaker | |
| router = APIRouter() | |
| logger = logging.getLogger(__name__) | |
| async def get_all_feedbacks(db: Annotated[sessionmaker, Depends(DI.get_db)]): | |
| logger.info("Handling GET request to /feedbacks") | |
| try: | |
| with db() as session: | |
| result = session.query(Feedback).all() | |
| logger.info(f"Successfully retrieved {len(result)} feedbacks") | |
| return result | |
| except Exception as e: | |
| logger.error(f"Error retrieving feedbacks: {str(e)}") | |
| raise e | |
| async def get_feedback(feedback_id: int, db: Annotated[sessionmaker, Depends(DI.get_db)]): | |
| logger.info(f"Handling GET request to /feedback/{feedback_id}") | |
| try: | |
| with db() as session: | |
| feedback = ( | |
| session.query(Feedback).filter(Feedback.feedback_id == feedback_id).first() | |
| ) | |
| if feedback is None: | |
| logger.warning(f"Feedback not found: {feedback_id}") | |
| raise FeedbackNotFoundException(feedback_id) | |
| logger.info(f"Successfully retrieved feedback {feedback_id}") | |
| return feedback | |
| except Exception as e: | |
| logger.error(f"Error retrieving feedback {feedback_id}: {str(e)}") | |
| raise e | |
| async def create_feedback(feedback: FeedbackCreate, db: Annotated[sessionmaker, Depends(DI.get_db)]): | |
| logger.info("Handling POST request to /feedback") | |
| try: | |
| with db() as session: | |
| log_entry = session.query(Log).filter(Log.id == feedback.log_id).first() | |
| if log_entry is None: | |
| logger.warning(f"Log not found: {feedback.log_id}") | |
| raise LogNotFoundException(feedback.log_id) | |
| new_feedback = Feedback( | |
| log_id=feedback.log_id, | |
| userComment=feedback.userComment, | |
| userScore=feedback.userScore, | |
| manualEstimate=feedback.manualEstimate, | |
| llmEstimate=feedback.llmEstimate, | |
| ) | |
| session.add(new_feedback) | |
| session.commit() | |
| session.refresh(new_feedback) | |
| logger.info( | |
| f"Successfully created feedback with ID: {new_feedback.id}" | |
| ) | |
| return new_feedback | |
| except Exception as e: | |
| logger.error(f"Error creating feedback: {str(e)}") | |
| raise e | |