|
|
from fastapi import APIRouter |
|
|
from fastapi import Request, Depends, HTTPException |
|
|
from loguru import logger |
|
|
|
|
|
from app.schema.conversation_schema import ConversationResponse, ConversationItemResponse |
|
|
from app.service.chat_service import ChatService |
|
|
from app.security.auth_service import AuthService |
|
|
|
|
|
|
|
|
router = APIRouter(prefix="/v1", tags=["conversation"]) |
|
|
chat_service = ChatService() |
|
|
auth_service = AuthService() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/conversations", response_model=ConversationResponse, response_model_exclude_none=True) |
|
|
async def list_conversations(username: str = Depends(auth_service.verify_credentials)) -> ConversationResponse: |
|
|
""" |
|
|
Get all conversations by current user |
|
|
""" |
|
|
logger.debug(f"Listing conversations for username: {username}") |
|
|
try: |
|
|
return await chat_service.find_all_conversations(username) |
|
|
except Exception as e: |
|
|
logger.error(f"Error in list_conversations: {str(e)}") |
|
|
raise HTTPException(status_code=500, detail=str(e)) |
|
|
|
|
|
|
|
|
|
|
|
@router.get("/conversations/{completion_id}", response_model=ConversationItemResponse, response_model_exclude_none=True) |
|
|
async def retrieve_conversation( |
|
|
completion_id: str, request: Request, username: str = Depends(auth_service.verify_credentials) |
|
|
) -> ConversationItemResponse: |
|
|
""" |
|
|
Get a conversation by id for current user |
|
|
""" |
|
|
logger.debug(f"Retrieving conversation with completion_id: {completion_id}") |
|
|
try: |
|
|
return await chat_service.find_conversation_by_id(completion_id) |
|
|
except Exception as e: |
|
|
raise HTTPException(status_code=500, detail=str(e)) |
|
|
|