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