Wall06 commited on
Commit
f0be696
·
verified ·
1 Parent(s): ec795f3

Create modules/database.py

Browse files
Files changed (1) hide show
  1. modules/database.py +38 -2
modules/database.py CHANGED
@@ -1,17 +1,54 @@
1
  import sqlite3
2
  import pandas as pd
 
3
 
4
  DB_NAME = "menuvision.db"
5
 
6
  def init_db():
7
  conn = sqlite3.connect(DB_NAME)
8
  c = conn.cursor()
9
- # Create Tables
10
  c.execute('''CREATE TABLE IF NOT EXISTS restaurants
11
  (id INTEGER PRIMARY KEY, name TEXT, location TEXT, owner TEXT)''')
 
 
 
 
 
12
  conn.commit()
13
  conn.close()
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  def add_restaurant(name, location, owner):
16
  try:
17
  conn = sqlite3.connect(DB_NAME)
@@ -25,7 +62,6 @@ def add_restaurant(name, location, owner):
25
 
26
  def search_restaurants(query):
27
  conn = sqlite3.connect(DB_NAME)
28
- # Simple SQL query to find matches
29
  sql = f"SELECT name, location, owner FROM restaurants WHERE name LIKE '%{query}%' OR location LIKE '%{query}%'"
30
  df = pd.read_sql_query(sql, conn)
31
  conn.close()
 
1
  import sqlite3
2
  import pandas as pd
3
+ import hashlib
4
 
5
  DB_NAME = "menuvision.db"
6
 
7
  def init_db():
8
  conn = sqlite3.connect(DB_NAME)
9
  c = conn.cursor()
10
+ # Table for Restaurants
11
  c.execute('''CREATE TABLE IF NOT EXISTS restaurants
12
  (id INTEGER PRIMARY KEY, name TEXT, location TEXT, owner TEXT)''')
13
+
14
+ # Table for Users (Login/Signup)
15
+ c.execute('''CREATE TABLE IF NOT EXISTS users
16
+ (email TEXT PRIMARY KEY, password TEXT, role TEXT)''')
17
+
18
  conn.commit()
19
  conn.close()
20
 
21
+ # --- USER FUNCTIONS ---
22
+ def create_user(email, password, role):
23
+ try:
24
+ conn = sqlite3.connect(DB_NAME)
25
+ c = conn.cursor()
26
+ # Hash password for basic security
27
+ hashed_pw = hashlib.sha256(password.encode()).hexdigest()
28
+ c.execute("INSERT INTO users (email, password, role) VALUES (?, ?, ?)", (email, hashed_pw, role))
29
+ conn.commit()
30
+ conn.close()
31
+ return f"✅ Account created for {email} as {role}!"
32
+ except sqlite3.IntegrityError:
33
+ return "❌ Error: User with this email already exists."
34
+ except Exception as e:
35
+ return f"Error: {e}"
36
+
37
+ def verify_login(email, password):
38
+ conn = sqlite3.connect(DB_NAME)
39
+ c = conn.cursor()
40
+ hashed_pw = hashlib.sha256(password.encode()).hexdigest()
41
+
42
+ c.execute("SELECT role FROM users WHERE email=? AND password=?", (email, hashed_pw))
43
+ result = c.fetchone()
44
+ conn.close()
45
+
46
+ if result:
47
+ return f"✅ Login Successful! Welcome back, {result[0]}."
48
+ else:
49
+ return "❌ Invalid email or password."
50
+
51
+ # --- RESTAURANT FUNCTIONS ---
52
  def add_restaurant(name, location, owner):
53
  try:
54
  conn = sqlite3.connect(DB_NAME)
 
62
 
63
  def search_restaurants(query):
64
  conn = sqlite3.connect(DB_NAME)
 
65
  sql = f"SELECT name, location, owner FROM restaurants WHERE name LIKE '%{query}%' OR location LIKE '%{query}%'"
66
  df = pd.read_sql_query(sql, conn)
67
  conn.close()