From b61a126c497aae90da1c710faea9df35bea5796e Mon Sep 17 00:00:00 2001
From: Brady James Garvin <bgarvin@cse.unl.edu>
Date: Thu, 22 Jul 2021 14:09:44 -0500
Subject: [PATCH] Added relationships and uncommented code to create starter
 data.

---
 diner.py           |  8 ++++++++
 diner_installer.py | 14 +++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/diner.py b/diner.py
index c0ad745..517b682 100644
--- a/diner.py
+++ b/diner.py
@@ -15,6 +15,7 @@ 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):
@@ -24,12 +25,17 @@ 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')
+    order_items = relationship('OrderItem', uselist=True, back_populates='item')
+    orders = relationship('Order', uselist=True, secondary='order_items')
 
 
 class Order(Persisted):
     __tablename__ = 'orders'
     order_id = Column(Integer, primary_key=True)
     timestamp = Column(DateTime)
+    order_items = relationship('OrderItem', uselist=True, back_populates='order')
+    items = relationship('Item', uselist=True, secondary='order_items')
 
 
 class OrderItem(Persisted):
@@ -37,6 +43,8 @@ class OrderItem(Persisted):
     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)
+    item = relationship('Item', back_populates='order_items')
+    order = relationship('Order', back_populates='order_items')
 
 
 class DinerDatabase(object):
diff --git a/diner_installer.py b/diner_installer.py
index cbca811..a39e145 100644
--- a/diner_installer.py
+++ b/diner_installer.py
@@ -30,13 +30,13 @@ def main():
         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.')
+        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