Login / database.py
Springboardmen's picture
Update database.py
8277f52 verified
import sqlite3
import os
from datetime import date
DB_FILE = "users.db"
def get_connection():
return sqlite3.connect(DB_FILE, check_same_thread=False)
def recreate_database():
if os.path.exists(DB_FILE):
os.remove(DB_FILE)
def create_tables():
try:
conn = get_connection()
cur = conn.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE,
password TEXT,
otp TEXT
)
""")
cur.execute("""
CREATE TABLE IF NOT EXISTS weight_history(
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT,
date TEXT,
weight REAL
)
""")
conn.commit()
conn.close()
except sqlite3.DatabaseError:
# database corrupted → recreate
recreate_database()
conn = get_connection()
cur = conn.cursor()
cur.execute("""
CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE,
password TEXT,
otp TEXT
)
""")
cur.execute("""
CREATE TABLE weight_history(
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT,
date TEXT,
weight REAL
)
""")
conn.commit()
conn.close()
# -----------------------
# USER FUNCTIONS
# -----------------------
def register_user(email, password):
conn = get_connection()
cur = conn.cursor()
try:
cur.execute(
"INSERT INTO users(email,password) VALUES (?,?)",
(email, password)
)
conn.commit()
return True
except:
return False
finally:
conn.close()
def login_user_db(email, password):
conn = get_connection()
cur = conn.cursor()
cur.execute(
"SELECT * FROM users WHERE email=? AND password=?",
(email, password)
)
user = cur.fetchone()
conn.close()
return user
# -----------------------
# OTP
# -----------------------
def save_otp(email, otp):
conn = get_connection()
cur = conn.cursor()
cur.execute(
"UPDATE users SET otp=? WHERE email=?",
(otp, email)
)
conn.commit()
conn.close()
def verify_otp_db(email, otp):
conn = get_connection()
cur = conn.cursor()
cur.execute(
"SELECT * FROM users WHERE email=? AND otp=?",
(email, otp)
)
user = cur.fetchone()
conn.close()
return user
# -----------------------
# WEIGHT TRACKER
# -----------------------
def save_weight(email, weight):
today = str(date.today())
conn = get_connection()
cur = conn.cursor()
cur.execute(
"INSERT INTO weight_history(email,date,weight) VALUES (?,?,?)",
(email, today, weight)
)
conn.commit()
conn.close()
def get_weight_history(email):
conn = get_connection()
cur = conn.cursor()
cur.execute(
"SELECT date,weight FROM weight_history WHERE email=?",
(email,)
)
data = cur.fetchall()
conn.close()
return data