Spaces:
Sleeping
Sleeping
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 | |