1+ import logging
2+ from functools import lru_cache
13from typing import List
4+
25from fastapi import APIRouter , Body , Depends
36from fastapi .responses import JSONResponse
4- from functools import lru_cache
57from sqlalchemy .orm import Session
68
7- from app .schemas .conversation import ConversationCreate , ConversationUpdate , ConversationResponse
89from app .api .deps import get_current_user
10+ from app .api .endpoints .knowledge_bases import get_knowledge_base_service
11+ from app .db .database import get_db
12+ from app .repositories .conversation_repository import ConversationRepository
13+ from app .schemas .conversation import (
14+ ConversationCreate ,
15+ ConversationResponse ,
16+ ConversationUpdate ,
17+ )
918from app .schemas .user import UserResponse
1019from app .services .conversation_service import ConversationService
11- from app .repositories .conversation_repository import ConversationRepository
1220from app .services .knowledge_base_service import KnowledgeBaseService
13- from app .api .endpoints .knowledge_bases import get_knowledge_base_service
14- from app .db .database import get_db
15- import logging
1621
1722router = APIRouter ()
1823logger = logging .getLogger (__name__ )
1924
25+
2026@lru_cache ()
2127def get_conversation_repository () -> ConversationRepository :
2228 """Get conversation repository instance"""
2329 return ConversationRepository ()
2430
31+
2532def get_conversation_service (
26- conversation_repository : ConversationRepository = Depends (get_conversation_repository ),
33+ conversation_repository : ConversationRepository = Depends (
34+ get_conversation_repository
35+ ),
2736 knowledge_base_service : KnowledgeBaseService = Depends (get_knowledge_base_service ),
28- db : Session = Depends (get_db )
37+ db : Session = Depends (get_db ),
2938) -> ConversationService :
3039 """Get conversation service instance"""
3140 return ConversationService (
3241 conversation_repository = conversation_repository ,
3342 knowledge_base_service = knowledge_base_service ,
34- db = db
43+ db = db ,
3544 )
3645
46+
3747@router .post ("" , response_model = ConversationResponse )
3848async def create_conversation (
3949 payload : ConversationCreate = Body (..., description = "Conversation details" ),
4050 current_user : UserResponse = Depends (get_current_user ),
41- conversation_service : ConversationService = Depends (get_conversation_service )
51+ conversation_service : ConversationService = Depends (get_conversation_service ),
4252):
4353 """Create a new conversation"""
4454 return await conversation_service .create_conversation (payload , current_user )
4555
56+
4657@router .get ("" , response_model = List [ConversationResponse ])
4758async def list_conversations (
4859 current_user : UserResponse = Depends (get_current_user ),
49- conversation_service : ConversationService = Depends (get_conversation_service )
60+ conversation_service : ConversationService = Depends (get_conversation_service ),
5061):
5162 """List all conversations for the current user"""
5263 logger .info (f"Listing conversations for user { current_user .id } " )
5364 return await conversation_service .list_conversations (current_user )
5465
66+
5567@router .get ("/{conversation_id}" , response_model = ConversationResponse )
5668async def get_conversation (
5769 conversation_id : str ,
5870 current_user : UserResponse = Depends (get_current_user ),
59- conversation_service : ConversationService = Depends (get_conversation_service )
71+ conversation_service : ConversationService = Depends (get_conversation_service ),
6072):
6173 """Get conversation details including messages"""
6274 return await conversation_service .get_conversation (conversation_id , current_user )
6375
76+
6477@router .put ("/{conversation_id}" , response_model = ConversationResponse )
6578async def update_conversation (
6679 conversation_id : str ,
67- conversation_update : ConversationUpdate = Body (..., description = "Conversation details" ),
80+ conversation_update : ConversationUpdate = Body (
81+ ..., description = "Conversation details"
82+ ),
6883 current_user : UserResponse = Depends (get_current_user ),
69- conversation_service : ConversationService = Depends (get_conversation_service )
84+ conversation_service : ConversationService = Depends (get_conversation_service ),
7085):
7186 """Update conversation details"""
72- return await conversation_service .update_conversation (conversation_id , conversation_update , current_user )
87+ return await conversation_service .update_conversation (
88+ conversation_id , conversation_update , current_user
89+ )
90+
7391
7492@router .delete ("/{conversation_id}" )
7593async def delete_conversation (
7694 conversation_id : str ,
7795 current_user : UserResponse = Depends (get_current_user ),
78- conversation_service : ConversationService = Depends (get_conversation_service )
96+ conversation_service : ConversationService = Depends (get_conversation_service ),
7997):
8098 """Delete a conversation and all its messages"""
8199 await conversation_service .delete_conversation (conversation_id , current_user )
82- return JSONResponse (content = {"message" : "Conversation deleted successfully" })
100+ return JSONResponse (content = {"message" : "Conversation deleted successfully" })
0 commit comments