Skip to content
Snippets Groups Projects
Commit f445bcbc authored by Brady James Garvin's avatar Brady James Garvin
Browse files

Completed code in class.

parent f68d4d8e
Branches
No related tags found
No related merge requests found
...@@ -6,6 +6,40 @@ from sqlalchemy.orm import sessionmaker, relationship ...@@ -6,6 +6,40 @@ from sqlalchemy.orm import sessionmaker, relationship
Persisted = declarative_base() # pylint: disable=invalid-name 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): class DietDatabase(object):
@staticmethod @staticmethod
def construct_mysql_url(authority, port, database, username, password): def construct_mysql_url(authority, port, database, username, password):
......
...@@ -4,17 +4,21 @@ from sqlalchemy.exc import SQLAlchemyError ...@@ -4,17 +4,21 @@ from sqlalchemy.exc import SQLAlchemyError
from datetime import datetime from datetime import datetime
from diet import DietDatabase from diet import DietDatabase, User, FoodType, Meal, MealFoodType
def add_starter_data(session): 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(): def main():
try: try:
url = DietDatabase.construct_mysql_url('localhost', 3306, 'diet', 'root', 'cse') url = DietDatabase.construct_mysql_url('localhost', 3306, 'diet', 'root', 'cse')
diner_database = DietDatabase(url) diner_database = DietDatabase(url)
diner_database.ensure_tables_exist() diner_database.ensure_tables_exist()
print('Tables created.') print('Tables created.')
session = diner_database.create_session() session = diner_database.create_session()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment