From 6cb7937fa5f801cf7fbc12fb00f1e13fd1bb2943 Mon Sep 17 00:00:00 2001 From: Maxwell Date: Tue, 19 Dec 2023 15:18:15 +0300 Subject: [PATCH] Completed Assignmnet --- lib/__pycache__/models.cpython-38.pyc | Bin 0 -> 1960 bytes lib/debug.py | 1 + lib/freebies.db | Bin 20480 -> 24576 bytes lib/models.py | 24 ++++++++++++++++-- lib/seed.py | 34 ++++++++++++++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 lib/__pycache__/models.cpython-38.pyc diff --git a/lib/__pycache__/models.cpython-38.pyc b/lib/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0cd2e654cab005c7b6b15f9f1911a0daf283072 GIT binary patch literal 1960 zcmb7FOOG2x5T2f~Jx_bR5sxSYFpnTCv38`K5UUkpqX0teCE?PS*4SNMPj((o&)AAB z4j}J^Lw*6`2kc*(D<}TKUZARHydDXyv>B<(_4Tv*`>NW%bi1B`-~B&+hu_+U@i&3y z*Fx|uw)_%}G$f0SgmIRb+)ONPB`w}c+PuwZ%#1sU&28;lv6HymMZYE65#t`T!IPag zjQik%FKzUK?+xil_tKCq1Y3)D5qr`{>}%XZ9LO%>uEqzl_uLpB{DYAg!*=OC%M?WC z=})jOJEvK^Ow!W+F)iR6RM~l6s3<)zou8oypN2&^WM!Zr4vQ#D^LeyD+?OzoLxo){ z5R)*6(wtpvzL{N!M_(4m6n7o6?-WprRovI%_7x_ePWe2&m zxL+~J1L+}0erca($s$bG+?{GCg8ao5EB%Fvl2EP11(IezQvj0)O1qk~zP=a6@mB*0 zF%)o=sl_}@ugub(gwqSWFU|||X^5<`#udo7u$^MdduSy4)p%+AiLw7>VJz0!#yzg1 z8CDOnDc7tcbF3qH~g(y8CaDyd^EXqKLSIaQ2 zN4lcYw1SH6rl<@`Gm?t*QtzYT-C4FwB}u)8P$`>cICY%4dPwu=UJdgB!2k`loQ%U- zW{-KyGkc~UxjjElaQdC{!);`RS7(J^XNC0?R=g!)mA_D3+)y2$DJ|?!hXn7Td0TPY z$GGW05%ualGWW^sudZ)RbPTZV#0hXsLzqB)NQ*uq^D&tLnH%QSCj@V(*IcVlsqa>r zKf_T9B&X-CrkO~l{{NAD^T;V2y%Wj0ICT+fk4kaNwkAGqJKWYdfG!p&!xA-l4}GWh z52P!-OM~~Nk0lal9rTSVT{bppG>YUVxG7&mI(mFgdQ^~Nku8?^o)_=&ru%^$i&h?=0gNxKY_&h4B&;?Z-QKVG&90)lU)nmCT>xsOpos zRclIO(lw{_-Ir9K_050*&sHU_og8;nqaVmLxI$ObOW%~E{N92YqV007I`Z-)Q? delta 61 zcmZoTz}T>Wae}lUD+2=q2*UvLL>*&MRtCLzSzi7h3@m(74E((OJNfGQq&5o*EaTlQ I#rMn+05sDJLI3~& 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()