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, metode 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()