(refactor): Implement robust logging and database error handling
Introduced logging for user operations Added database rollback on user creation failure Enhanced exception handling and error reporting
This commit is contained in:
		
							parent
							
								
									de5bff5935
								
							
						
					
					
						commit
						dc36b21dcc
					
				
					 1 changed files with 21 additions and 9 deletions
				
			
		|  | @ -1,30 +1,42 @@ | ||||||
| from models.User.user import User, db | from models.User.user import User, db | ||||||
|  | import logging | ||||||
|  | 
 | ||||||
|  | logger = logging.getLogger(__name__) | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class UserService: | class UserService: | ||||||
|     def create_user(self, username, password): |     def create_user(self, username, password): | ||||||
|         if not username or not password: |         if not username or not password: | ||||||
|             raise ValueError("Username and password are required") |             raise ValueError("Username and password are required") | ||||||
|          | 
 | ||||||
|         if len(username) < 3 or len(password) < 8: |         if len(username) < 3 or len(password) < 8: | ||||||
|             raise ValueError("Username must be at least 3 characters and password must be at least 8 characters.") |             raise ValueError( | ||||||
|          |                 "Username must be at least 3 characters and password must be at least 8 characters." | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|         existing_user = User.query.filter_by(username=username).first() |         existing_user = User.query.filter_by(username=username).first() | ||||||
|         if existing_user: |         if existing_user: | ||||||
|             raise ValueError("User already exists") |             raise ValueError("User already exists") | ||||||
|          | 
 | ||||||
|         new_user = User(username=username, password=password) |         new_user = User(username=username, password=password) | ||||||
|         db.session.add(new_user) |         db.session.add(new_user) | ||||||
|         db.session.commit() |         try: | ||||||
|  |             db.session.commit() | ||||||
|  |         except Exception as e: | ||||||
|  |             db.session.rollback() | ||||||
|  |             logger.error(f"Error creating user: {e}") | ||||||
|  |             raise ValueError("Could not create user") from e | ||||||
|         return new_user |         return new_user | ||||||
| 
 | 
 | ||||||
|     def verify_user(self, username, password): |     def verify_user(self, username, password): | ||||||
|         user = User.query.filter_by(username=username).first() |         user = User.query.filter_by(username=username).first() | ||||||
|         if not user: |         if not user: | ||||||
|             print(f"User not found: {username}") |             logger.warning(f"User not found: {username}") | ||||||
|             raise ValueError("Invalid username or password") |             raise ValueError("Invalid username or password") | ||||||
|          | 
 | ||||||
|         if not user.check_password(password): |         if not user.check_password(password): | ||||||
|  |             logger.warning(f"Invalid password for user: {username}") | ||||||
|             raise ValueError("Invalid username or password") |             raise ValueError("Invalid username or password") | ||||||
|          | 
 | ||||||
|         print(f"User verified: {username}") |         logger.info(f"User verified: {username}") | ||||||
|         return user |         return user | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Blake Ridgway
						Blake Ridgway