expon_backend / src /expon /feedback /interfaces /rest /feedback_controller.py
alexander1010's picture
feat update get
954e6f4 verified
Raw
History Blame Contribute Delete
1.71 kB
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from uuid import UUID
from typing import List
from src.expon.shared.infrastructure.dependencies import get_db
from src.expon.feedback.interfaces.rest.feedback_request import FeedbackRequest
from src.expon.feedback.interfaces.rest.feedback_response import FeedbackResponse
from src.expon.feedback.infrastructure.persistence.jpa.feedback_repository import FeedbackRepository
from src.expon.presentation.infrastructure.persistence.jpa.repositories.presentation_repository import PresentationRepository
from src.expon.feedback.application.internal.generate_feedback_service import GenerateFeedbackService
router = APIRouter()
@router.post("/", response_model=FeedbackResponse)
def generate_feedback(request: FeedbackRequest, db: Session = Depends(get_db)):
feedback_repo = FeedbackRepository(db)
presentation_repo = PresentationRepository(db)
service = GenerateFeedbackService(feedback_repo, presentation_repo)
result = service.generate_feedback(request.presentation_id)
return result
@router.get("/user/{user_id}", response_model=List[FeedbackResponse])
def get_feedback_by_user(user_id: UUID, db: Session = Depends(get_db)):
repo = FeedbackRepository(db)
results = repo.get_by_user(user_id)
return results
@router.get("/presentation/{presentation_id}", response_model=List[FeedbackResponse])
def get_feedback_by_presentation(presentation_id: UUID, db: Session = Depends(get_db)):
repo = FeedbackRepository(db)
results = repo.get_by_presentation(presentation_id)
if not results:
raise HTTPException(status_code=404, detail="Feedback no encontrado")
return results