Coverage for src/app/adapters/conversation_postgres_adapter.py: 39%
36 statements
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-03 00:51 +0200
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-03 00:51 +0200
1from repositories.conversation_postgres_repository import ConversationPostgresRepository
2from models.conversation_model import ConversationModel
4from ports.save_conversation_title_port import SaveConversationTitlePort
5from ports.get_conversations_port import GetConversationsPort
6from ports.get_conversation_port import GetConversationPort
7from ports.delete_conversation_port import DeleteConversationPort
9from entities.conversation_entity import ConversationEntity
11class ConversationPostgresAdapter(GetConversationPort, GetConversationsPort, SaveConversationTitlePort, DeleteConversationPort):
13 def __init__(self, conversation_postgres_repository: ConversationPostgresRepository):
14 self.conversation_postgres_repository = conversation_postgres_repository
16 def get_conversation(self, conversation: ConversationModel) -> ConversationModel:
17 """
18 Retrieve a conversation.
19 Args:
20 conversation (ConversationModel): The conversation object containing the ID to retrieve.
21 Returns:
22 ConversationModel: The retrieved conversation.
23 """
24 try:
26 conversation_entity = ConversationEntity(
27 id=conversation.get_id(),
28 title=conversation.get_title(),
29 user_id=conversation.get_user_id()
30 )
32 conversation = self.conversation_postgres_repository.get_conversation(conversation_entity)
34 return ConversationModel(
35 id=conversation.get_id(),
36 title=conversation.get_title(),
37 user_id=conversation.get_user_id()
38 )
40 except Exception as e:
41 raise e
43 def get_conversations(self, conversation : ConversationModel) -> list[ConversationModel]:
44 """
45 Retrieve all conversations.
46 Returns:
47 list[ConversationModel]: A list of conversations.
48 """
49 try:
51 conversation_entity = ConversationEntity(
52 id=conversation.get_id(),
53 title=conversation.get_title(),
54 user_id=conversation.get_user_id()
55 )
57 conversations = self.conversation_postgres_repository.get_conversations(conversation_entity)
59 return [
60 ConversationModel(
61 id=conversation.get_id(),
62 title=conversation.get_title(),
63 user_id=conversation.get_user_id()
64 )
65 for conversation in conversations
66 ]
68 except Exception as e:
69 raise e
71 def save_conversation_title(self, conversation: ConversationModel) -> int:
72 """
73 Save the title of a conversation.
74 Args:
75 conversation (ConversationModel): The conversation object containing the updated title.
76 Returns:
77 int: The ID of the saved conversation.
78 """
79 try:
81 conversation_entity = ConversationEntity(
82 id=conversation.get_id(),
83 title=conversation.get_title(),
84 user_id=conversation.get_user_id()
85 )
87 return self.conversation_postgres_repository.save_conversation_title(conversation_entity)
90 except Exception as e:
91 raise e
93 def delete_conversation_title(self, conversation: ConversationModel) -> bool:
94 """
95 Delete a conversation title.
96 Args:
97 conversation (ConversationModel): The conversation object containing the ID to delete.
98 Returns:
99 int: The ID of the deleted conversation.
100 """
101 try:
103 conversation_entity = ConversationEntity(
104 id=conversation.get_id(),
105 title=conversation.get_title(),
106 user_id=conversation.get_user_id()
107 )
109 return self.conversation_postgres_repository.delete_conversation(conversation_entity)
112 except Exception as e:
113 raise e