diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c96..e316c095d 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..d95a04bcc 100644 --- a/lib/models.py +++ b/lib/models.py @@ -1,4 +1,4 @@ -from sqlalchemy import ForeignKey, Column, Integer, String, MetaData +from sqlalchemy import ForeignKey, Column, Integer, String, MetaData, create_engine from sqlalchemy.orm import relationship, backref from sqlalchemy.ext.declarative import declarative_base @@ -16,6 +16,8 @@ class Company(Base): name = Column(String()) founding_year = Column(Integer()) + freebies = relationship('Freebie', back_populates='company') + def __repr__(self): return f'' @@ -25,5 +27,26 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) + freebies = relationship('Freebie', back_populates='dev') + 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'' + +engine = create_engine('sqlite:///freebies.db', echo=False) +Base.metadata.create_all(engine) \ No newline at end of file diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..9318606c2 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,26 @@ #!/usr/bin/env python3 # Script goes here! +from sqlalchemy.orm import sessionmaker +from models import Company, Dev, Freebie, engine + +Session = sessionmaker(bind=engine) +session = Session() + + +c = Company(name='Company', founding_year=2026) +d = Dev(name='Grace') + +session.add_all([c, d]) +session.commit() + + +f = Freebie(item_name='Sticker', value=5, dev=d, company=c) +session.add(f) +session.commit() + + +print(d.freebies) +print(c.freebies) +print(f.dev.name) +print(f.company.name)