diff --git a/local_backend/seed.py b/local_backend/seed.py new file mode 100644 index 0000000..406b6e9 --- /dev/null +++ b/local_backend/seed.py @@ -0,0 +1,45 @@ +""" +Run once to bootstrap the database with initial data. +Usage: python seed.py +""" +import bcrypt +from database import engine, Base, SessionLocal +import models.user +import models.table +import models.printer +import models.product +import models.order + +Base.metadata.create_all(bind=engine) + +db = SessionLocal() + +try: + from models.user import User + from models.printer import Printer + + # ── Manager account ─────────────────────────────────────────────────────── + if not db.query(User).filter(User.username == "manager").first(): + db.add(User( + username="manager", + pin_hash=bcrypt.hashpw(b"1234", bcrypt.gensalt()).decode(), + role="manager", + )) + print("Created manager account (PIN: 1234)") + else: + print("Manager account already exists — skipping") + + # ── Printers ────────────────────────────────────────────────────────────── + if not db.query(Printer).filter(Printer.name == "Kitchen").first(): + db.add(Printer(name="Kitchen", ip_address="10.98.20.25", port=9100)) + print("Created Kitchen printer") + + if not db.query(Printer).filter(Printer.name == "Bar").first(): + db.add(Printer(name="Bar", ip_address="10.98.20.25", port=9100)) + print("Created Bar printer (update IP when you have a second printer)") + + db.commit() + print("\nDone. Change the manager PIN after first login.") + +finally: + db.close()