File size: 1,713 Bytes
257a3a9
c71e312
 
954e6f4
c71e312
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
954e6f4
c71e312
 
 
 
 
954e6f4
c71e312
 
954e6f4
59e8129
954e6f4
59e8129
 
954e6f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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