Spaces:
Sleeping
Sleeping
| 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 |