From f445bcbcbace9faa4c3ea8b2e065c32194ec63c5 Mon Sep 17 00:00:00 2001
From: Brady James Garvin <bgarvin@cse.unl.edu>
Date: Fri, 29 Mar 2019 12:28:36 -0500
Subject: [PATCH] Completed code in class.

---
 diet.py           | 34 ++++++++++++++++++++++++++++++++++
 diet_installer.py |  8 ++++++--
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/diet.py b/diet.py
index e4b2b76..2f9ca48 100644
--- a/diet.py
+++ b/diet.py
@@ -6,6 +6,40 @@ from sqlalchemy.orm import sessionmaker, relationship
 Persisted = declarative_base()  # pylint: disable=invalid-name
 
 
+class User(Persisted):
+    __tablename__ = 'users'
+    user_id = Column(Integer, primary_key=True)
+    name = Column(String(256), nullable=False)
+    meals = relationship('Meal', uselist=True, back_populates='user')
+
+
+class Meal(Persisted):
+    __tablename__ = 'meals'
+    meal_id = Column(Integer, primary_key=True)
+    user_id = Column(Integer, ForeignKey('users.user_id', ondelete='CASCADE'), nullable=False)
+    timestamp = Column(DateTime, nullable=False)
+    user = relationship('User', back_populates='meals')
+    meal_food_types = relationship('MealFoodType', uselist=True, back_populates='meal')
+    food_types = relationship('FoodType', uselist=True, secondary='meal_food_types', back_populates='meals')
+
+
+class FoodType(Persisted):
+    __tablename__ = 'food_types'
+    food_type_id = Column(Integer, primary_key=True)
+    name = Column(String(256), nullable=False)
+    meal_food_types = relationship('MealFoodType', uselist=True, back_populates='food_type')
+    meals = relationship('Meal', uselist=True, secondary='meal_food_types', back_populates='food_types')
+
+
+class MealFoodType(Persisted):
+    __tablename__ = 'meal_food_types'
+    meal_id = Column(Integer, ForeignKey('meals.meal_id', ondelete='CASCADE'), primary_key=True)
+    food_type_id = Column(Integer, ForeignKey('food_types.food_type_id', ondelete='CASCADE'), primary_key=True)
+    amount = Column(Integer, nullable=False)
+    meal = relationship('Meal', back_populates='meal_food_types')
+    food_type = relationship('FoodType', back_populates='meal_food_types')
+
+
 class DietDatabase(object):
     @staticmethod
     def construct_mysql_url(authority, port, database, username, password):
diff --git a/diet_installer.py b/diet_installer.py
index 10f9abc..8a86890 100644
--- a/diet_installer.py
+++ b/diet_installer.py
@@ -4,17 +4,21 @@ from sqlalchemy.exc import SQLAlchemyError
 
 from datetime import datetime
 
-from diet import DietDatabase
+from diet import DietDatabase, User, FoodType, Meal, MealFoodType
 
 
 def add_starter_data(session):
-    pass
+    ada = User(name='Ada')
+    pancakes = FoodType(name='Pancakes')
+    meal = Meal(user=ada, meal_food_types=[MealFoodType(food_type=pancakes, amount=3)], timestamp=datetime.now())
+    session.add(meal)
 
 
 def main():
     try:
         url = DietDatabase.construct_mysql_url('localhost', 3306, 'diet', 'root', 'cse')
         diner_database = DietDatabase(url)
+
         diner_database.ensure_tables_exist()
         print('Tables created.')
         session = diner_database.create_session()
-- 
GitLab