Spaces:
Sleeping
Sleeping
File size: 3,229 Bytes
de09f1b e8cc882 8277f52 e8cc882 de09f1b 90baad2 de09f1b 8277f52 de09f1b 8277f52 fd35642 8277f52 42d03a8 8277f52 42d03a8 8277f52 42d03a8 8277f52 42d03a8 8277f52 42d03a8 90baad2 8277f52 90baad2 8277f52 05ce217 8277f52 42d03a8 05ce217 42d03a8 90baad2 8277f52 42d03a8 05ce217 42d03a8 05ce217 42d03a8 fd35642 8277f52 fd35642 8277f52 fd35642 8277f52 fd35642 e8cc882 fd35642 8277f52 fd35642 8277f52 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | 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 |