Skip to content
Snippets Groups Projects
Select Git revision
  • 34a2bab750ba86ac170edbd47ba3b376fc25a904
  • master default protected
2 results

app.test.js

Blame
  • Forked from SOFT Core / SOFT 260 / React Redux Starter Code
    Source project has a limited visibility.
    diet.py 2.36 KiB
    from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey
    from sqlalchemy.ext.declarative import declarative_base
    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', viewonly=True)
    
    
    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', viewonly=True)
    
    
    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):
            return f'mysql+mysqlconnector://{username}:{password}@{authority}:{port}/{database}'
    
        @staticmethod
        def construct_in_memory_url():
            return 'sqlite:///'
    
        def __init__(self, url):
            self.engine = create_engine(url)
            self.Session = sessionmaker()  # pylint: disable=invalid-name
            self.Session.configure(bind=self.engine)
    
        def ensure_tables_exist(self):
            Persisted.metadata.create_all(self.engine)
    
        def create_session(self):
            return self.Session()