Coverage for src/app/adapters/user_postgres_adapter.py: 36%
34 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 ports.registration_port import RegistrationPort
2from ports.validation_port import ValidationPort
3from ports.authentication_port import AuthenticationPort
5from repositories.user_postgres_repository import UserPostgresRepository
7from models.user_model import UserModel
9from entities.user_entity import UserEntity
12class UserPostgresAdapter(RegistrationPort, ValidationPort, AuthenticationPort):
14 def __init__(self, user_postgres_repository: UserPostgresRepository):
15 self.user_postgres_repository = user_postgres_repository
18 def register(self, user_model: UserModel)-> bool:
19 """
20 Register a new user.
22 Args:
23 user_model (UserModel): The user data transfer object.
25 Returns:
26 bool: True if the user was registered successfully, False otherwise.
27 """
29 try:
30 user_entity = UserEntity(
31 username=user_model.get_username(),
32 password=user_model.get_password(),
33 email=user_model.get_email(),
34 phone=user_model.get_phone(),
35 first_name=user_model.get_first_name(),
36 last_name=user_model.get_last_name(),
37 is_admin=user_model.get_is_admin()
38 )
40 return self.user_postgres_repository.register(user_entity)
42 except Exception as e:
43 raise e
46 def get_user_by_email(self, email: str) -> bool:
47 """
48 Get a user by email.
50 Args:
51 email (str): The email of the user.
53 Returns:
54 bool: True if the user exists, False otherwise.
55 """
57 try:
58 return self.user_postgres_repository.get_user_by_email(email)
59 except Exception as e:
60 raise e
63 def get_user_by_username(self, username: str) -> bool:
64 """
65 Get a user by username.
67 Args:
68 username (str): The username of the user.
70 Returns:
71 bool: True if the user exists, False otherwise.
72 """
74 try:
75 return self.user_postgres_repository.get_user_by_username(username)
76 except Exception as e:
77 raise e
79 def get_user_for_authentication(self, user_model: UserModel) -> UserModel:
80 """
81 Authenticate and retrieve a user.
83 Args:
84 user_model (UserModel): The user model to authenticate.
86 Returns:
87 UserModel: The authenticated user model.
88 """
90 try:
91 user_entity = UserEntity(
92 username=user_model.get_username(),
93 )
95 user_result = self.user_postgres_repository.get_user_for_authentication(user_entity)
97 if user_result is None:
98 raise Exception
100 return UserModel(
101 id=user_result.get_id(),
102 username=user_result.get_username(),
103 password=user_result.get_password(),
104 email=user_result.get_email(),
105 phone=user_result.get_phone(),
106 first_name=user_result.get_first_name(),
107 last_name=user_result.get_last_name(),
108 is_admin=user_result.get_is_admin()
109 )
110 except Exception as e:
111 raise e