diff --git a/lib/__pycache__/models.cpython-38.pyc b/lib/__pycache__/models.cpython-38.pyc new file mode 100644 index 000000000..f0cd2e654 Binary files /dev/null and b/lib/__pycache__/models.cpython-38.pyc differ diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..c8f43194f 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker from models import Company, Dev diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c96..f43c3930f 100644 Binary files a/lib/freebies.db and b/lib/freebies.db differ diff --git a/lib/models.py b/lib/models.py index 2681bee5a..d88783973 100644 --- a/lib/models.py +++ b/lib/models.py @@ -1,5 +1,5 @@ from sqlalchemy import ForeignKey, Column, Integer, String, MetaData -from sqlalchemy.orm import relationship, backref +from sqlalchemy.orm import relationship from sqlalchemy.ext.declarative import declarative_base convention = { @@ -16,6 +16,8 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies = relationship('Freebie', backref='company', cascade='all, delete-orphan') + def __repr__(self): return f'' @@ -23,7 +25,25 @@ class Dev(Base): __tablename__ = 'devs' id = Column(Integer(), primary_key=True) - name= Column(String()) + name = Column(String()) + + freebies = relationship('Freebie', backref='dev', cascade='all, delete-orphan') def __repr__(self): return f'' + +class Freebie(Base): + __tablename__ = 'freebies' + + id = Column(Integer(), primary_key=True) + item_name = Column(String()) + value = Column(Integer()) + + dev_id = Column(Integer(), ForeignKey('devs.id')) + company_id = Column(Integer(), ForeignKey('companies.id')) + + dev = relationship('Dev', back_populates='freebies') + company = relationship('Company', back_populates='freebies') + + def __repr__(self): + return f'' diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..c7450fed7 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,37 @@ #!/usr/bin/env python3 # Script goes here! +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from faker import Faker + +from models import Base, Company, Dev, Freebie + +def seed_database(): + engine = create_engine('sqlite:///freebies.db') + Base.metadata.create_all(engine) + + Session = sessionmaker(bind=engine) + session = Session() + + # Create sample data using Faker + fake = Faker() + + # Create Companies + company1 = Company(name='TechCorp', founding_year=2000) + company2 = Company(name='SoftCo', founding_year=1995) + + # Create Devs + dev1 = Dev(name='John') + dev2 = Dev(name='Alice') + + # Create Freebies + freebie1 = Freebie(item_name='Laptop', value=500, dev=dev1, company=company1) + freebie2 = Freebie(item_name='Headphones', value=100, dev=dev2, company=company2) + + # Add instances to the session and commit to the database + session.add_all([company1, company2, dev1, dev2, freebie1, freebie2]) + session.commit() + +if __name__ == '__main__': + seed_database()