From 840d5c18b9b563d437e23b927c883880a5679843 Mon Sep 17 00:00:00 2001 From: karuana Date: Sun, 25 May 2025 18:24:37 +0300 Subject: [PATCH 1/2] Submit --- __pycache__/models.cpython-311.pyc | Bin 0 -> 6361 bytes create_db.py | 10 +++ debug.py | 103 +++++++++++++++++++++++++ lib/freebies.db => freebies.db | Bin 20480 -> 24576 bytes lib/__pycache__/models.cpython-311.pyc | Bin 0 -> 6365 bytes lib/debug.py | 9 --- lib/models.py | 29 ------- lib/seed.py | 3 - models.py | 96 +++++++++++++++++++++++ seed.py | 35 +++++++++ 10 files changed, 244 insertions(+), 41 deletions(-) create mode 100644 __pycache__/models.cpython-311.pyc create mode 100644 create_db.py create mode 100644 debug.py rename lib/freebies.db => freebies.db (79%) create mode 100644 lib/__pycache__/models.cpython-311.pyc delete mode 100644 lib/debug.py delete mode 100644 lib/models.py delete mode 100644 lib/seed.py create mode 100644 models.py create mode 100644 seed.py diff --git a/__pycache__/models.cpython-311.pyc b/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f51b8741b482553f203972ba508d552dc8652015 GIT binary patch literal 6361 zcmcIoO>7&-72f6V@^|&aNRDE~Ye$Yv#g<~r^-nB2lJytIjTBf$8Zc|R_ zq)C7dcOU0}-@NzceQ)Luu~?Xc^w(2E3o8+h`v(^4$?s&I{S7krIF(cRESKX`e9n{d z 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 delta 460 zcmZoTz}T>Wae_1}D+2=q>qG^6QC0@Mcv)Wl9}FyfQVjgO{5$#T`J^^03M}IlPiA2k z7Zqh})GSF%%1KR0Eh`3L*2(Go7798FT$}+xp1zJjkqX|fkqR1_DVkiGjoi%a;_~v0 zjj5CC`9de(<d&dkq4<1#r1xjKfpDug&X z`M4^eNh)Y?aYD7l=auFvggFK|dpHJZ7#nFS`1yw@_=WoTfE?!R?-v{rQ3sYOzniA6FOObuL#7(cTrC$bWdF$@Aw J6Fk{axd0EAgU|o~ diff --git a/lib/__pycache__/models.cpython-311.pyc b/lib/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a71ee455edd805731a7ed4cb694bc136237c61d GIT binary patch literal 6365 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 L^87p6nUentEyt=S literal 0 HcmV?d00001 diff --git a/lib/debug.py b/lib/debug.py deleted file mode 100644 index 4f922eb69..000000000 --- a/lib/debug.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python3 - -from sqlalchemy import create_engine - -from models import Company, Dev - -if __name__ == '__main__': - engine = create_engine('sqlite:///freebies.db') - import ipdb; ipdb.set_trace() diff --git a/lib/models.py b/lib/models.py deleted file mode 100644 index 2681bee5a..000000000 --- a/lib/models.py +++ /dev/null @@ -1,29 +0,0 @@ -from sqlalchemy import ForeignKey, Column, Integer, String, MetaData -from sqlalchemy.orm import relationship, backref -from sqlalchemy.ext.declarative import declarative_base - -convention = { - "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", -} -metadata = MetaData(naming_convention=convention) - -Base = declarative_base(metadata=metadata) - -class Company(Base): - __tablename__ = 'companies' - - id = Column(Integer(), primary_key=True) - name = Column(String()) - founding_year = Column(Integer()) - - def __repr__(self): - return f'' - -class Dev(Base): - __tablename__ = 'devs' - - id = Column(Integer(), primary_key=True) - name= Column(String()) - - def __repr__(self): - return f'' diff --git a/lib/seed.py b/lib/seed.py deleted file mode 100644 index b16becbbb..000000000 --- a/lib/seed.py +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env python3 - -# Script goes here! diff --git a/models.py b/models.py new file mode 100644 index 000000000..52a59681f --- /dev/null +++ b/models.py @@ -0,0 +1,96 @@ +from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, MetaData +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import relationship + +convention = { + "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", +} + +metadata = MetaData(naming_convention=convention) + +Base = declarative_base(metadata=metadata) + +class Dev(Base): + __tablename__ = "devs" + + id = Column(Integer, primary_key=True) + name = Column(String, unique=True, nullable=False) + + freebies = relationship("Freebie", back_populates="dev") + + + def __repr__(self): + return f"" + + + def _repr_(self): + return f"" + + @property + def companies(self): + """Return a list of companies that have given freebies to this dev""" + return list(set(freebie.company for freebie in self.freebies)) + + def received_one(self, item_name): + """Check if dev has received a freebie with given item_name""" + return any(freebie.item_name == item_name for freebie in self.freebies) + + def give_away(self, dev, freebie, session): + """Transfer a freebie to another dev if it belongs to this dev""" + if freebie in self.freebies: + freebie.dev = dev + session.commit() + + +class Company(Base): + __tablename__ = "companies" + + id = Column(Integer(), primary_key=True) + name = Column(String, unique=True, nullable=False) + founding_year = Column(Integer()) + + freebies = relationship("Freebie", back_populates="company") + + + def __repr__(self): + return f"" + + @property + def devs(self): + return list(set(freebie.dev for freebie in self.freebies)) + + + def give_freebie(self, session, dev, item_name, value): + """Create and return a new freebie for this company and dev""" + freebie = Freebie( + item_name=item_name, + value=value, + dev=dev, + company=self + ) + session.add(freebie) + session.commit() + + @classmethod + def oldest_company(cls, session): + """Return the company with the earliest founding year""" + return session.query(cls).order_by(cls.founding_year).first() + +class Freebie(Base): + __tablename__ = "freebies" + + id = Column(Integer, primary_key=True) + item_name = Column(String, nullable=False) + 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"" + + def print_details(self): + """Return a formatted string with freebie details""" + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}" diff --git a/seed.py b/seed.py new file mode 100644 index 000000000..7c4818b98 --- /dev/null +++ b/seed.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +# Script goes here! +from models import Base, Dev, Company, Freebie +from sqlalchemy.orm import sessionmaker +from sqlalchemy import create_engine + +engine = create_engine('sqlite:///freebies.db') +Base.metadata.create_all(engine) # This line creates the tables +Session = sessionmaker(bind=engine) +session = Session() + +# Create devs +dev1 = Dev(name="Musk") +dev2 = Dev(name="Louis") +dev3 = Dev(name="Ada") +dev4 = Dev(name="Grace") + +# Create companies +company1 = Company(name="Grok", founding_year=2023) +company2 = Company(name="OpenAI", founding_year=2015) +company3 = Company(name="Microsoft", founding_year=1975) +company4 = Company(name="Apple", founding_year=1976) + +# Create freebies with relationships +freebie1 = Freebie(item_name="T-shirt", value=20, dev=dev1, company=company2) +freebie2 = Freebie(item_name="Laptop", value=2000, dev=dev2, company=company1) +freebie3 = Freebie(item_name="Stickers", value=5, dev=dev3, company=company4) +freebie4 = Freebie(item_name="Water Bottle", value=15, dev=dev4, company=company3) +freebie5 = Freebie(item_name="Hoodie", value=45, dev=dev1, company=company1) # Changed dev5 to dev1 since we only have 4 devs + +session.add_all([company1, company2, company3, company4, dev1, dev2, dev3, dev4, freebie1, freebie2, freebie3, freebie4, freebie5]) +session.commit() + +print("Database created successfully!") From 671603fd7f788be6221f634ff69d59f2eaa70cba Mon Sep 17 00:00:00 2001 From: karuana Date: Sun, 25 May 2025 23:12:07 +0300 Subject: [PATCH 2/2] Submit --- __pycache__/models.cpython-311.pyc | Bin 6361 -> 6357 bytes freebies.db | Bin 24576 -> 24576 bytes models.py | 6 +++--- seed.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/__pycache__/models.cpython-311.pyc b/__pycache__/models.cpython-311.pyc index f51b8741b482553f203972ba508d552dc8652015..f6303adaf88cac6a3418f01f9c305b299d54486d 100644 GIT binary patch delta 1490 zcmb7EO-vI(6y9yO?Y6sXe}F2KpA`kV5I}wc_=ge`)WjbGc(9^~oi#L}l*|?c62(NK zS9DBFjCjNlh>7-O;>ClS7&#F2;GQ^n^MujFc<{YhB^J0i$$Wh?@6Gh>`@T1yn?5yZ zPc$tcz~~uo8E$^2y%GZwE@7-cWK)qw$t9RR_DC)5NyuROi9|fh-UXK+EWva}B0zkz zLP8-jplWKwKPxPNYw2%*kk~;2;0qE3FhtZo!O&RR70b=Ly2WrY#L*alB?9QQjD2&r zi50mzDJF_#?6~JryaF7HZd)2jSy|g{nOR%DN=@@h%Cz!Nu6TOI3Z{F%G*!V7L$v*= zteGAh9ZH*qo5o>}8VJn*mK#9VZ_+Z{sb%fHi&gkXhRb#jjZV=9Zqriq@_77W{W9eD z!gmh-B`80yz!+KxV0)99bUKwaB0?QTT)(@&$aWFs&T>>aSPls_(|{$5)luMy7df)Zsc$R&&}(FS?Q*wofW#>)NY+qEQPV5C_5mG=O!mytc9#MUB)=m9L7QQL2f9Y{_z}^&9HuL-Wt-P)K@%~L5@D4ygf~*g$ zBnk~Yad-0m delta 1537 zcmb7EO>7%Q6yC9S*K4oWKXL3Jg_Mm+B(|+nrD@Gy2&F_(E7X9}08)Sk<5?*d{$n-{ z%7Fxl9=Jg>;((A42NZ}JAxeRg?C@Nb~u5-kUeG z@B8NcGXCqh^OfVIG#Wphnpj%7=IpX7LrM0r?Dm~l_Y*wE^=)G_u4z|kMq|N>X?~KM zJh5$U#>hi+-;?6W%i4m?Q-o>X;r3;1lU!Ht1ZWExo+e+GJA^r&xu|*BFh1?CggW2Ga*(t{Zc-Tr__he~fl{EKD|*{nlc;*7Ci$IEI|Z0jCK9 ze6s7lFI=otlcof2YlWy`&;$=ETx4x?)Mhp;yX1&vD zHI_X++JH56RG0|-AZT>jfsXAoD8ZlBYn0$z^1_87#DO4noEU~RN)TFI(dqhPc~zXm z+T(zy3AQwWOGcN@!U8xngYV_-WX1WS|660vuHLk(x9qAMOs%C4VH^>g6;kT1_2;y)86p6|4}C@4N;UgQa9M1fG0 z03P5Wf;!XWC-I3*+H`BDNJ1;wS|KiYqELf-BN> z=1QsxWB7kSF&{eTO}OfYd@0>8|8REaL3U`Y)S5j%%7`n@l74Vs(gx?^NwPdMqWUSa zqd067=K&B|U=o0EP`;6UkHou{)tQ6%yZ4hH<(AfQ{;bz0Ch1o^1DFCl3xH~b0XPFd zPN78eBCJEoc@AqizzYPSU2oQcpye+wb-0+r@>zhYgbQn0L6WdSGq@qw^Am>z^kaU* zRT~gnr+IhaDj5I#g>I52HKCWp&@to>eaDz7ox;#YA>_!L&;F9Az3}Z zlSOl(7J_!NFQiB=cyaq8@|Y;fwSsFxJz`pZS-4alB-4wj_Zl&AFWCqimLvUBq?~&H zwyPegDyCviDe>NTd7}7w6(9e9$caQCcZ=ndD!njx(IjKs$8_PFbHZDL`1ag4yifP;_z|LJ)CpC%bi@MldE*LIcXC@ zq%8=1Ds#CbwoTgl&KUd@GZqN$!!Q<*GW5lk#2sD4Z|crXJ;+QC#F(8*(HSEw4vsiO zzT*tKPOv@2C}-p!j~i6c1ZJnxbjpb)Oq<4{yXNuequHvd*%D>8Wznf@)Q^t#Tt-!T zdbJv8hV`Y@(GD9l2Wj z26LI>J3iqpmhc4gxCtNEdGDh*2n(Y5!`v{}%w@jAEpx(XkVvCIX=l%+_=k8rnUqM1 zQhFhDOBKft;-+aOB(k4VeZ|o6Gbg<;9C7%MNkAgaoW9r^47+}~PuF2eq=_@9J+JIK zt-6*lIKjQUi`CGpvUi$h==EvZz@9iovDE*>$#O!ek7EpST^y4VtUgYXqWNo;#g@!- V%*|d-QvNn^4v{0qA#B|o`vbJQw_^YR delta 588 zcmZoTz}Rqrae}lUI|Bm)8xX?)^F$qEadrm1a4%l|9}KL#JPiB+{O9>f`DJ-|HX8~| z<56fzV`UeYm1S&|FG)Fr#Bi zA`3{wy(lp`m6?NCl+m}eIGc%sS)9`+zcjNLV%shT{xAH`_^F#(-F diff --git a/models.py b/models.py index 52a59681f..8b4d16ea4 100644 --- a/models.py +++ b/models.py @@ -14,7 +14,7 @@ class Dev(Base): __tablename__ = "devs" id = Column(Integer, primary_key=True) - name = Column(String, unique=True, nullable=False) + name = Column(String()) freebies = relationship("Freebie", back_populates="dev") @@ -46,7 +46,7 @@ class Company(Base): __tablename__ = "companies" id = Column(Integer(), primary_key=True) - name = Column(String, unique=True, nullable=False) + name = Column(String()) founding_year = Column(Integer()) freebies = relationship("Freebie", back_populates="company") @@ -80,7 +80,7 @@ class Freebie(Base): __tablename__ = "freebies" id = Column(Integer, primary_key=True) - item_name = Column(String, nullable=False) + item_name = Column(String()) value = Column(Integer) dev_id = Column(Integer, ForeignKey("devs.id")) company_id = Column(Integer, ForeignKey("companies.id")) diff --git a/seed.py b/seed.py index 7c4818b98..cbbf038b8 100644 --- a/seed.py +++ b/seed.py @@ -6,7 +6,7 @@ from sqlalchemy import create_engine engine = create_engine('sqlite:///freebies.db') -Base.metadata.create_all(engine) # This line creates the tables + Session = sessionmaker(bind=engine) session = Session()