Coverage for src/app/adapters/message_postgres_adapter.py: 36%
42 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.message_postgres_repository import MessagePostgresRepository
2from models.message_model import MessageModel
3from ports.get_message_port import GetMessagePort
4from ports.get_messages_by_conversation_port import GetMessagesByConversationPort
5from ports.save_message_port import SaveMessagePort
6from ports.get_all_messages_port import GetAllMessagesPort
8from entities.message_entity import MessageEntity
10class MessagePostgresAdapter(GetMessagePort, SaveMessagePort, GetMessagesByConversationPort, GetAllMessagesPort):
12 def __init__(self, message_postgres_repository: MessagePostgresRepository):
13 self.message_postgres_repository = message_postgres_repository
15 def get_message(self, message: MessageModel) -> MessageModel:
16 """
17 Retrieve a message by its ID.
18 Args:
19 message (MessageModel): The message object containing the ID to retrieve.
20 Returns:
21 MessageModel: The retrieved message.
22 """
23 try:
25 message_entity = MessageEntity(
26 id=message.get_id(),
27 text=message.get_text(),
28 created_at=message.get_created_at(),
29 is_bot=message.get_is_bot(),
30 conversation_id=message.get_conversation_id(),
31 rating=message.get_rating()
32 )
34 message = self.message_postgres_repository.get_message(message_entity)
36 return MessageModel(
37 id=message.get_id(),
38 text=message.get_text(),
39 created_at=message.get_created_at(),
40 is_bot=message.get_is_bot(),
41 conversation_id=message.get_conversation_id(),
42 rating=message.get_rating()
43 )
45 except Exception as e:
46 raise e
48 def get_messages_by_conversation(self, conversation: MessageModel) -> list[MessageModel]:
49 """
50 Retrieve messages by conversation.
51 Args:
52 conversation (MessageModel): The conversation object containing the ID to retrieve messages for.
53 Returns:
54 list[MessageModel]: A list of retrieved messages.
55 """
56 try:
58 conversation_entity = MessageEntity(
59 conversation_id=conversation.get_conversation_id()
60 )
62 messages = self.message_postgres_repository.get_messages_by_conversation(conversation_entity)
64 return [
65 MessageModel(
66 id=message.get_id(),
67 text=message.get_text(),
68 created_at=message.get_created_at(),
69 is_bot=message.get_is_bot(),
70 conversation_id=message.get_conversation_id(),
71 rating=message.get_rating()
72 )
73 for message in messages
74 ]
76 except Exception as e:
77 raise e
79 def save_message(self, message: MessageModel)-> int:
80 """
81 Save a message.
82 Args:
83 message (MessageModel): The message to save.
84 Returns:
85 int: The ID of the saved
86 """
87 try:
88 message_entity = MessageEntity(
89 id=message.get_id(),
90 text=message.get_text(),
91 created_at=message.get_created_at(),
92 is_bot=message.get_is_bot(),
93 conversation_id=message.get_conversation_id(),
94 rating=message.get_rating()
95 )
97 return self.message_postgres_repository.save_message(message_entity)
99 except Exception as e:
100 raise e
102 def update_message_rating(self, message: MessageModel) -> bool:
103 """
104 Update the rating of a message.
105 Args:
106 message (MessageModel): The message containing the ID and the new rating value.
107 Returns:
108 bool: True if the rating was successfully updated, False otherwise.
109 """
110 try:
111 message_entity = MessageEntity(
112 id=message.get_id(),
113 rating=message.get_rating()
114 )
116 return self.message_postgres_repository.update_message_rating(message_entity)
118 except Exception as e:
119 raise e
121 def fetch_messages(self) -> list[MessageModel]:
122 """
123 Fetch the dashboard metrics data.
124 Returns:
125 list[MessageModel]: A list of MessageModel objects containing the messages data.
126 """
127 try:
128 messages = self.message_postgres_repository.fetch_messages()
130 return [
131 MessageModel(
132 id=message.get_id(),
133 text=message.get_text(),
134 created_at=message.get_created_at(),
135 is_bot=message.get_is_bot(),
136 conversation_id=message.get_conversation_id(),
137 rating=message.get_rating()
138 )
139 for message in messages
140 ]
142 except Exception as e:
143 raise e