FitAi / database.py
Shrey0405's picture
Create database.py
a52940c verified
Raw
History Blame Contribute Delete
3 kB
import sqlite3
import os
from pathlib import Path
DB_PATH = os.path.join(os.path.dirname(__file__), "fitplan.db")
def init_database():
"""Initialize the SQLite database with users table."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
conn.close()
def user_exists(email):
"""Check if a user with the given email already exists."""
email = email.strip().lower()
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('SELECT id FROM users WHERE email = ?', (email,))
result = cursor.fetchone()
conn.close()
return result is not None
def register_user(name, email, password_hash):
"""Register a new user in the database."""
email = email.strip().lower()
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('''
INSERT INTO users (name, email, password_hash)
VALUES (?, ?, ?)
''', (name, email, password_hash))
conn.commit()
conn.close()
return True
except sqlite3.IntegrityError as e:
print(f"Database error: {e}")
return False
def get_user_by_email(email):
"""Retrieve user data by email."""
email = email.strip().lower()
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('SELECT id, name, email, password_hash FROM users WHERE email = ?', (email,))
user = cursor.fetchone()
conn.close()
if user:
return {
"id": user[0],
"name": user[1],
"email": user[2],
"password_hash": user[3]
}
return None
def get_user_by_name_email(name, email):
"""Retrieve user data by name and email."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('SELECT id, name, email, password_hash FROM users WHERE name = ? AND email = ?', (name, email))
user = cursor.fetchone()
conn.close()
if user:
return {
"id": user[0],
"name": user[1],
"email": user[2],
"password_hash": user[3]
}
return None
def get_all_users():
"""Debug: Get all users in database."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute('SELECT id, name, email FROM users')
users = cursor.fetchall()
conn.close()
return users
user = cursor.fetchone()
conn.close()
if user:
return {
"id": user[0],
"name": user[1],
"email": user[2],
"password_hash": user[3]
}
return None