Python-Menu/project/database.py

105 lines
2.7 KiB
Python

import sqlite3
def connect():
return sqlite3.connect("cafe.db")
def setup_database():
db = connect()
cur = db.cursor()
# =====================
# TABEL USERS
# =====================
cur.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
password TEXT,
role TEXT
)
""")
# =====================
# TABEL MENU (ADA KATEGORI)
# =====================
cur.execute("""
CREATE TABLE IF NOT EXISTS menu(
id INTEGER PRIMARY KEY AUTOINCREMENT,
nama TEXT,
kategori TEXT,
harga REAL,
gambar TEXT
)
""")
# Jaga-jaga DB lama (tidak error)
try:
cur.execute("ALTER TABLE menu ADD COLUMN kategori TEXT")
except sqlite3.OperationalError:
pass
# =====================
# TABEL TRANSAKSI
# =====================
cur.execute("""
CREATE TABLE IF NOT EXISTS transaksi(
id INTEGER PRIMARY KEY AUTOINCREMENT,
tanggal TEXT,
total REAL,
meja_id INTEGER,
status TEXT
)
""")
# =====================
# DETAIL TRANSAKSI
# =====================
cur.execute("""
CREATE TABLE IF NOT EXISTS detail_transaksi(
id INTEGER PRIMARY KEY AUTOINCREMENT,
transaksi_id INTEGER,
menu_nama TEXT,
harga REAL,
jumlah INTEGER,
subtotal REAL
)
""")
# =====================
# INSERT USER DEFAULT
# =====================
cur.execute("SELECT COUNT(*) FROM users")
if cur.fetchone()[0] == 0:
users = [
("admin", "admin", "admin"),
("kasir", "kasir", "kasir"),
("pembeli", "pembeli", "pembeli"),
("waiter", "waiter", "waiter"),
("pemilik", "pemilik", "pemilik")
]
cur.executemany(
"INSERT INTO users(username,password,role) VALUES (?,?,?)",
users
)
# =====================
# INSERT MENU DEFAULT
# =====================
cur.execute("SELECT COUNT(*) FROM menu")
if cur.fetchone()[0] == 0:
menus = [
('Ayam Goreng', 'Makanan', 20000, 'aset/ayam_goreng.jpg'),
('Bakso', 'Makanan', 15000, 'aset/bakso.jpg'),
('Mie Ayam', 'Makanan', 12000, 'aset/mie_ayam.jpg'),
('Es Teh', 'Minuman', 5000, 'aset/es_teh.jpg'),
('Es Teler', 'Dessert', 15000, 'aset/es_teler.jpg'),
('Jus Jeruk', 'Minuman', 8000, 'aset/jus_jeruk.jpg')
]
cur.executemany(
"INSERT INTO menu (nama, kategori, harga, gambar) VALUES (?,?,?,?)",
menus
)
db.commit()
db.close()