Coverage for src/app/adapters/support_message_postgres_adapter.py: 40%
35 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.support_message_postgres_repository import SupportMessagePostgresRepository
2from models.support_message_model import SupportMessageModel
3from ports.get_support_message_port import GetSupportMessagePort
4from ports.get_support_messages_port import GetSupportMessagesPort
5from ports.save_support_message_port import SaveSupportMessagePort
6from ports.mark_done_support_messages_port import MarkDoneSupportMessagesPort
8from entities.support_message_entity import SupportMessageEntity
10class SupportMessagePostgresAdapter(GetSupportMessagePort, GetSupportMessagesPort, SaveSupportMessagePort, MarkDoneSupportMessagesPort):
12 def __init__(self, support_message_postgres_repository: SupportMessagePostgresRepository):
13 self.support_message_postgres_repository = support_message_postgres_repository
15 def get_support_message(self, message: SupportMessageModel) -> SupportMessageModel:
16 """
17 Retrieves a support message.
18 Args:
19 message (SupportMessageModel): The support message model containing the details.
20 Returns:
21 SupportMessageModel: The retrieved support message.
22 """
24 try:
25 support_message_entity = SupportMessageEntity(
26 id=message.get_id(),
27 user_id=message.get_user_id(),
28 description=message.get_description(),
29 status=message.get_status(),
30 subject=message.get_subject(),
31 created_at=message.get_created_at()
32 )
34 support_message = self.support_message_postgres_repository.get_support_message(support_message_entity)
36 return SupportMessageModel(
37 id=support_message.get_id(),
38 user_id=support_message.get_user_id(),
39 description=support_message.get_description(),
40 status=support_message.get_status(),
41 subject=support_message.get_subject(),
42 created_at=support_message.get_created_at()
43 )
45 except Exception as e:
46 raise e
49 def get_support_messages(self) -> list[SupportMessageModel]:
50 """
51 Retrieves all support messages.
52 Returns:
53 list[SupportMessageModel]: A list of support messages.
54 """
55 try:
56 support_messages = self.support_message_postgres_repository.get_support_messages()
57 return [
58 SupportMessageModel(
59 id=support_message.id,
60 user_id=support_message.user_id,
61 user_email=support_message.user_email,
62 description=support_message.description,
63 status=support_message.status,
64 subject=support_message.subject,
65 created_at=support_message.created_at
66 )
67 for support_message in support_messages
68 ]
70 except Exception as e:
71 raise e
73 def save_support_message(self, support_message: SupportMessageModel)-> int:
74 """
75 Save a support message.
76 Args:
77 support_message (SupportMessageModel): The support message to save.
78 Returns:
79 int: The ID of the saved support message.
80 """
81 try:
83 support_message_entity = SupportMessageEntity(
84 id=support_message.get_id(),
85 user_id=support_message.get_user_id(),
86 description=support_message.get_description(),
87 status=support_message.get_status(),
88 subject=support_message.get_subject(),
89 created_at=support_message.get_created_at()
90 )
92 return self.support_message_postgres_repository.save_support_message(support_message_entity)
95 except Exception as e:
96 raise e
98 def mark_done_support_messages(self, support_message_model: SupportMessageModel)-> int:
99 """
100 Mark a support message as done.
101 Args:
102 message (SupportMessageModel): The support message to mark as done.
103 """
104 try:
105 support_message_entity = SupportMessageEntity(
106 id=support_message_model.get_id(),
107 status=support_message_model.get_status()
108 )
110 return self.support_message_postgres_repository.mark_done_support_messages(support_message_entity)
112 except Exception as e:
113 raise e