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

1from ports.registration_port import RegistrationPort 

2from ports.validation_port import ValidationPort 

3from ports.authentication_port import AuthenticationPort 

4 

5from repositories.user_postgres_repository import UserPostgresRepository 

6 

7from models.user_model import UserModel 

8 

9from entities.user_entity import UserEntity 

10 

11 

12class UserPostgresAdapter(RegistrationPort, ValidationPort, AuthenticationPort): 

13 

14 def __init__(self, user_postgres_repository: UserPostgresRepository): 

15 self.user_postgres_repository = user_postgres_repository 

16 

17 

18 def register(self, user_model: UserModel)-> bool: 

19 """ 

20 Register a new user. 

21  

22 Args: 

23 user_model (UserModel): The user data transfer object. 

24  

25 Returns: 

26 bool: True if the user was registered successfully, False otherwise. 

27 """ 

28 

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 ) 

39 

40 return self.user_postgres_repository.register(user_entity) 

41 

42 except Exception as e: 

43 raise e 

44 

45 

46 def get_user_by_email(self, email: str) -> bool: 

47 """ 

48 Get a user by email. 

49  

50 Args: 

51 email (str): The email of the user. 

52  

53 Returns: 

54 bool: True if the user exists, False otherwise. 

55 """ 

56 

57 try: 

58 return self.user_postgres_repository.get_user_by_email(email) 

59 except Exception as e: 

60 raise e 

61 

62 

63 def get_user_by_username(self, username: str) -> bool: 

64 """ 

65 Get a user by username. 

66  

67 Args: 

68 username (str): The username of the user. 

69  

70 Returns: 

71 bool: True if the user exists, False otherwise. 

72 """ 

73 

74 try: 

75 return self.user_postgres_repository.get_user_by_username(username) 

76 except Exception as e: 

77 raise e 

78 

79 def get_user_for_authentication(self, user_model: UserModel) -> UserModel: 

80 """ 

81 Authenticate and retrieve a user. 

82  

83 Args: 

84 user_model (UserModel): The user model to authenticate. 

85  

86 Returns: 

87 UserModel: The authenticated user model. 

88 """ 

89 

90 try: 

91 user_entity = UserEntity( 

92 username=user_model.get_username(), 

93 ) 

94 

95 user_result = self.user_postgres_repository.get_user_for_authentication(user_entity) 

96 

97 if user_result is None: 

98 raise Exception 

99 

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