analysis.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from fastapi import APIRouter, HTTPException, status
  2. from app.schemas.analysis import (
  3. AnalysisSessionCreateRequest,
  4. AnalysisSessionListResponse,
  5. AnalysisSessionResponse,
  6. AnalysisSessionSnapshot,
  7. )
  8. from app.services.analysis_service import AnalysisService
  9. router = APIRouter()
  10. service = AnalysisService()
  11. @router.post(
  12. "/sessions",
  13. response_model=AnalysisSessionResponse,
  14. status_code=status.HTTP_201_CREATED,
  15. )
  16. def create_analysis_session(
  17. payload: AnalysisSessionCreateRequest,
  18. ) -> AnalysisSessionResponse:
  19. return service.create_session(payload)
  20. @router.get("/sessions", response_model=AnalysisSessionListResponse)
  21. def list_analysis_sessions() -> AnalysisSessionListResponse:
  22. return service.list_sessions()
  23. @router.get("/sessions/{session_id}", response_model=AnalysisSessionSnapshot)
  24. def get_analysis_session(session_id: str) -> AnalysisSessionSnapshot:
  25. snapshot = service.get_session(session_id)
  26. if snapshot is None:
  27. raise HTTPException(
  28. status_code=status.HTTP_404_NOT_FOUND,
  29. detail=f"Analysis session '{session_id}' was not found.",
  30. )
  31. return snapshot