diff --git a/freebies.db b/freebies.db new file mode 100644 index 000000000..374715477 Binary files /dev/null and b/freebies.db differ diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..d4b661892 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,9 +1,21 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine - -from models import Company, Dev +from models import Company, Dev, Freebie +from sqlalchemy.orm import sessionmaker if __name__ == '__main__': engine = create_engine('sqlite:///freebies.db') - import ipdb; ipdb.set_trace() + Session = sessionmaker(bind=engine) + session = Session() + + + # import ipdb; ipdb.set_trace() +dev = session.query(Dev).filter(Dev.name == 'Allan').first() +print(f"{dev.name} has received freebies from the following companies: {[company.name for company in dev.companies]}") + +company = session.query(Company).filter(Company.name == 'Google').first() +print(f"{company.name} gave freebies to: {[dev.name for dev in company.devs]}") + +freebie = session.query(Freebie).filter(Freebie.item_name == 'Google T-shirt').first() +print(f"{freebie.item_name} is worth {freebie.value} and was given to {freebie.dev.name} by {freebie.company.name}") \ No newline at end of file diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c96..e69de29bb 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..b2be9e5cd 100644 --- a/lib/models.py +++ b/lib/models.py @@ -16,6 +16,12 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies = relationship('Freebie', back_populates='company') + + @property + def devs(self): + return list ({freebie.dev for freebie in self.freebies}) + def __repr__(self): return f'' @@ -25,5 +31,26 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) + freebies = relationship('Freebie', back_populates='dev') + + @property + def companies(self): + return list({freebie.company for freebie in self.freebies}) + 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..c91272509 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,44 @@ #!/usr/bin/env python3 # Script goes here! +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from models import Base, Company, Dev, Freebie + +engine = create_engine('sqlite:///freebies.db') +Base.metadata.create_all(engine) + +Session = sessionmaker(bind=engine) +session = Session() + +session.query(Company).delete() +session.query(Dev).delete() +session.query(Freebie).delete() + +company1 = Company(name='Google', founding_year=1998) +company2 = Company(name='Apple', founding_year=1976) +company3 = Company(name='Microsoft', founding_year=1975) +company4 = Company(name='Amazon', founding_year=1994) +company5 = Company(name='Meta', founding_year=2004) + + +dev1 = Dev(name='Allan') +dev2 = Dev(name='Brendah') +dev3 = Dev(name='Janet') +dev4 = Dev(name='Jasmine') +dev5 = Dev(name='Brian') + + +session.add_all([company1, company2, company3, company4, company5, dev1, dev2, dev3, dev4, dev5]) +session.commit() + +freebie1 = Freebie(item_name='Google T-shirt', value=10, dev=dev4, company=company1) +freebie2 = Freebie(item_name='Apple Mug', value=15, dev=dev1, company=company2) +freebie3 = Freebie(item_name='Microsoft Pen', value=5, dev=dev5, company=company3) +freebie4 = Freebie(item_name='Amazon Gift Card', value=20, dev=dev4, company=company4) +freebie5 = Freebie(item_name='Meta Hoodie', value=30, dev=dev1, company=company5) + +session.add_all([freebie1, freebie2, freebie3, freebie4, freebie5]) +session.commit() + +print("Database seeded successfully!")