import psycopg2 from user_auth.user import User from settings.base import setup_logger, DB_HOST, DB_NAME, DB_PASSWORD, DB_PORT, DB_USER logger = setup_logger() class UserManager: def __init__(self): self.conn = psycopg2.connect( dbname=DB_NAME, user=DB_USER, password=DB_PASSWORD, host=DB_HOST, port=DB_PORT ) self.cursor = self.conn.cursor() def create_user(self, email, password, profile): if self.get_user(email): return False, "User already exists!" user = User(email, password, profile) try: self.cursor.execute( """ INSERT INTO users (username, password, name, age, gender, height, weight, location, allergies, spec_diet_pref, primary_goal, health_condition, activity_level, daily_calorie_intake) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """, (email, user.password_hash.decode("utf-8"), profile['name'], profile['age'], profile['gender'], profile['height'], profile['weight'], profile['location'], profile['allergies'], profile['spec_diet_pref'], profile['primary_goal'], profile['health_condition'], profile['activity_level'], profile['daily_calorie_intake']) ) self.conn.commit() logger.info(f'User created successfully: {email}') return True, "Account created successfully!" except Exception as e: self.conn.rollback() logger.error(f'Error creating user: {e}') return False, str(e) def get_user(self, email): self.cursor.execute("SELECT * FROM users WHERE username = %s", (email,)) result = self.cursor.fetchone() if result: profile = { "name": result[3], "age": result[4], "gender": result[5], "height": result[6], "weight": result[7], "location": result[8], "allergies": result[9], "spec_diet_pref": result[10], "primary_goal": result[11], "health_condition": result[12], "activity_level": result[13], "daily_calorie_intake": result[14] } print("result",result) logger.info(f'User retrieved from database: {result[1]}') return User(email=result[1], password=result[1], profile=profile) return None def close(self): self.cursor.close() self.conn.close()