From 243a2f9c794f648bd52074bee85f4d1f258a0e75 Mon Sep 17 00:00:00 2001 From: Brendah Edward Date: Sun, 25 May 2025 11:25:30 +0300 Subject: [PATCH 1/2] Initial commit --- lib/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/models.py b/lib/models.py index 2681bee5a..fd328bce4 100644 --- a/lib/models.py +++ b/lib/models.py @@ -27,3 +27,15 @@ class Dev(Base): 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', ondelete='CASCADE')) + company_id = Column(Integer(), ForeignKey('companies.id', ondelete='CASCADE')) + + def __repr__(self): + return f'' \ No newline at end of file From 69cfeed5686f2c5d0481e593d950d2f215d5b302 Mon Sep 17 00:00:00 2001 From: Brendah Edward Date: Sun, 25 May 2025 14:42:08 +0300 Subject: [PATCH 2/2] Seeded --- freebies.db | Bin 0 -> 16384 bytes lib/debug.py | 18 +++++++++++++++--- lib/freebies.db | Bin 20480 -> 0 bytes lib/models.py | 21 ++++++++++++++++++--- lib/seed.py | 41 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 freebies.db diff --git a/freebies.db b/freebies.db new file mode 100644 index 0000000000000000000000000000000000000000..374715477fdaadb2b2712f894bf811fbe2222d4c GIT binary patch literal 16384 zcmeI%J#W)M7zgk>zr?NE=s?g$6)HK2fkvV%d;#3ZO%>qn@_7jB6%x{J0jta z$PGd%dCWN>#8S;rt$*oiaQ>e5A6(K~F?>g?YI5Fs)$A{+nUzetE?-{v+|^1w{nOim}TOFNoXn3cJqJz*6!rkVP6!H02d2u!A-rQuL2>Z=`uru~W4RJvL z0uX=z1Rwwb2tWV=5P$##AaHF2Y||h!T1|aLu+F9pgUo48N4$y+sRDQdM~Cyu&N zE3rOIX$C21&i;N|S|6urnp=sYU3K?0+y9>u_J{pq-_;j@(`)kwu@DGA00Izz00bZa z0SG_<0uX=z1TF|nm^vve#eoQILnn9EM7I-!azaL#UmZ2~9Ca8)!?Y0QB z{r?GJKiN0-nZ08t7YZW)0SG_<0uX=z1Rwwb2tWV=5P-n{6u4#P$UQnq(?fl}5=DL> z@0xQ)jx172v(tTE30es+i`c(y7_)kg+*gkVNBw+5hNh|C)N-V#>hwmw9!*MiX#;!kCgneLnrEhT=9yn|d1x=rhtWc-Nji)Dg*p-sg_PozQbLG&(X-3C zRkQb65$6}V5#JTo#Z&Kb+xR1DokzlG8^1a~vVevF0tg_000IagfB*srAn+dv1hqzY zZ%?kwg+HF^P+!mUULQEN<=V=%UJq@R&!}Fj8HMU}TKj zvYf$N%gM(doYVJ~bE)3hm#P?X}SvN2_&+waSt&2={ZRLA2e@UHc29;HcXSlP;~^kJS~@ii}5#y1GP zqeF8`XmB>Va2+edQ>7KWt1p4t0^3+GlY3dY*FEn`5hbDiHvc-!s(8;|F4FbbD=+q} zG?CZx_w$FXopova7TJr200IagfB*srAb' @@ -25,6 +31,12 @@ 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'' @@ -34,8 +46,11 @@ class Freebie(Base): id = Column(Integer(), primary_key=True) item_name = Column(String()) value = Column(Integer()) - dev_id = Column(Integer(), ForeignKey('devs.id', ondelete='CASCADE')) - company_id = Column(Integer(), ForeignKey('companies.id', ondelete='CASCADE')) + 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'' \ No newline at end of file + 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!")