diff --git a/lib/__pycache__/models.cpython-38.pyc b/lib/__pycache__/models.cpython-38.pyc new file mode 100644 index 000000000..bc5d6f1d1 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..c796884e4 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,9 +1,13 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker -from models import Company, Dev + +from models import Company, Dev, Freebie, Base if __name__ == '__main__': engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind=engine) + session = Session() import ipdb; ipdb.set_trace() diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c96..8c10fec76 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..7dcca7e74 100644 --- a/lib/models.py +++ b/lib/models.py @@ -16,8 +16,20 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies = relationship("Freebie", backref="company") + def __repr__(self): return f'' + + def give_freebie(self, dev, item_name, value): + return Freebie(item_name=item_name, value=value, dev=dev, company=self) + + @classmethod + def oldest_company(cls, session): + return session.query(cls).order_by(cls.founding_year).first() + + + class Dev(Base): __tablename__ = 'devs' @@ -25,5 +37,33 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) + freebies = relationship("Freebie", backref="dev") + def __repr__(self): return f'' + + def received_one(self, item_name): + return any(f.item_name == item_name for f in self.freebies) + + def give_away(self, other_dev, freebie): + if freebie in self.freebies: + freebie.dev = other_dev + return True + return False + +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')) + + def __repr__(self): + return f'' + + def print_details(self): + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}" + \ No newline at end of file diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..627fe0b16 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,33 @@ #!/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') +Session = sessionmaker(bind=engine) +session = Session() + +Base.metadata.drop_all(engine) +Base.metadata.create_all(engine) + +google = Company(name="Google", founding_year=1998) +amazon = Company(name="Amazon", founding_year=1994) +netflix = Company(name="Netflix", founding_year=1997) + +alice = Dev(name="Alice") +bob = Dev(name="Bob") +carol = Dev(name="Carol") + +freebie1 = Freebie(item_name="T-shirt", value=20, dev=alice, company=google) +freebie2 = Freebie(item_name="Mug", value=10, dev=bob, company=amazon) +freebie3 = Freebie(item_name="Sticker", value=5, dev=carol, company=netflix) +freebie4 = Freebie(item_name="Hat", value=15, dev=alice, company=amazon) + +session.add_all([google, amazon, netflix, alice, bob, carol, freebie1, freebie2, freebie3, freebie4]) +session.commit() +print("Database seeded successfully!") + + +