46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from fastapi import APIRouter, HTTPException, status, Depends
|
|
from app.schemas import MessageCreate, MessageResponse, ConversationResponse
|
|
from app.services.chat_service import ChatService
|
|
from app.auth import get_current_user
|
|
|
|
router = APIRouter(prefix="/chat", tags=["chat"])
|
|
|
|
@router.get("/conversations", response_model=list)
|
|
def get_conversations(current_user: dict = Depends(get_current_user)):
|
|
"""Get all conversations for current user"""
|
|
return ChatService.get_conversations(current_user["user_id"])
|
|
|
|
@router.get("/conversations/{conversation_id}/messages", response_model=list)
|
|
def get_messages(
|
|
conversation_id: int,
|
|
limit: int = 50,
|
|
current_user: dict = Depends(get_current_user)
|
|
):
|
|
"""Get messages from a conversation"""
|
|
try:
|
|
return ChatService.get_messages(current_user["user_id"], conversation_id, limit)
|
|
except ValueError as e:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
detail=str(e)
|
|
)
|
|
|
|
@router.post("/conversations/{conversation_id}/messages", response_model=MessageResponse)
|
|
def send_message(
|
|
conversation_id: int,
|
|
message_data: MessageCreate,
|
|
current_user: dict = Depends(get_current_user)
|
|
):
|
|
"""Send a message in a conversation"""
|
|
try:
|
|
return ChatService.send_message(
|
|
current_user["user_id"],
|
|
conversation_id,
|
|
message_data.content
|
|
)
|
|
except ValueError as e:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
detail=str(e)
|
|
)
|