105 lines
2.7 KiB
Python
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()
|