From 285729767ceab50e97d2d6425e6d51769fe7508c Mon Sep 17 00:00:00 2001
From: Christopher Bohn <bohn@unl.edu>
Date: Wed, 30 Mar 2022 08:46:33 -0500
Subject: [PATCH] Revert "added many-to-many without extra payload" (wrong
 branch)

This reverts commit 9c17bb0bda0052a3f2e222cd7bb8b08ef1affde0.
---
 diner.py           |  6 +-----
 diner_installer.py | 22 +++++++++-------------
 2 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/diner.py b/diner.py
index cfd8ddf..c0ad745 100644
--- a/diner.py
+++ b/diner.py
@@ -15,7 +15,6 @@ class Menu(Persisted):
     __tablename__ = 'menus'
     menu_id = Column(Integer, primary_key=True)  # primary keys default to auto_increment
     name = Column(String(256), nullable=False)  # nullable is the default
-    items = relationship('Item', uselist=True, back_populates='menu')
 
 
 class Item(Persisted):
@@ -25,22 +24,19 @@ class Item(Persisted):
     menu_id = Column(Integer, ForeignKey('menus.menu_id', ondelete='CASCADE'), nullable=False)
     name = Column(String(256), nullable=False)
     price = Column(Integer, nullable=False)
-    menu = relationship('Menu', back_populates='items')
-    orders = relationship('Order', uselist=True, secondary='order_items', back_populates='items')
-    # # # If there isn't any extra payload in the join table, there's no need to explicitly mention it
 
 
 class Order(Persisted):
     __tablename__ = 'orders'
     order_id = Column(Integer, primary_key=True)
     timestamp = Column(DateTime)
-    items = relationship('Item', uselist=True, secondary='order_items', back_populates='orders')
 
 
 class OrderItem(Persisted):
     __tablename__ = 'order_items'
     order_id = Column(Integer, ForeignKey('orders.order_id', ondelete='CASCADE'), primary_key=True)
     item_id = Column(Integer, ForeignKey('items.item_id', ondelete='CASCADE'), primary_key=True)
+    amount = Column(Integer)
 
 
 class DinerDatabase(object):
diff --git a/diner_installer.py b/diner_installer.py
index f397337..cbca811 100644
--- a/diner_installer.py
+++ b/diner_installer.py
@@ -15,7 +15,7 @@ def add_starter_data(session):
     orange_juice = Item(menu=beverage_menu, name='Orange Juice', price=149)
     short_stack = Item(menu=food_menu, name='Pancakes', price=399)
     regular_pancakes = Item(menu=food_menu, name='Pancakes', price=499)
-    first_order = Order(items=[orange_juice])
+    first_order = Order(order_items=[OrderItem(item=orange_juice, amount=2)])
     session.add(beverage_menu)
     session.add(food_menu)
     session.add(orange_juice)
@@ -26,21 +26,17 @@ def add_starter_data(session):
 
 def main():
     try:
-        url = DinerDatabase.construct_mysql_url('localhost', 33060, 'diner', 'root', 'cse1208')
+        url = DinerDatabase.construct_mysql_url('localhost', 3306, 'diner', 'root', 'cse1208')
         diner_database = DinerDatabase(url)
         diner_database.ensure_tables_exist()
         print('Tables created.')
-        session = diner_database.create_session()
-        if already_has_data(session):
-            print('Not creating records because some already exist.')
-        else:
-            add_starter_data(session)
-            session.commit()
-            print('Records created.')
-        the_order: Order = session.query(Order).filter(Order.order_id == 1).one()
-        print([item.name for item in the_order.items])
-        orange_juice: Item = session.query(Item).filter(Item.name == 'Orange Juice').one()
-        print([order.order_id for order in orange_juice.orders])
+        # session = diner_database.create_session()
+        # if already_has_data(session):
+        #     print('Not creating records because some already exist.')
+        # else:
+        #     add_starter_data(session)
+        #     session.commit()
+        #     print('Records created.')
     except SQLAlchemyError as exception:
         print('Database setup failed!', file=stderr)
         print(f'Cause: {exception}', file=stderr)
-- 
GitLab