wellnessAI / user_auth /user_manager.py
shaileshjadhavSS
Updated DB variables
8537c2d
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()