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