From 81a3086eedd9c44f14853f33de8e43be5c993193 Mon Sep 17 00:00:00 2001 From: daganeabdul Date: Mon, 1 Dec 2025 16:11:33 +0300 Subject: [PATCH] all --- lib/create_tables.py | 13 ++++++++ lib/debug.py | 14 +++++---- lib/freebies.db | Bin 20480 -> 16384 bytes lib/freebies.db.bak | 2 ++ lib/models.py | 70 +++++++++++++++++++++++++++++++++++++------ lib/seed.py | 26 ++++++++++++++++ 6 files changed, 111 insertions(+), 14 deletions(-) create mode 100644 lib/create_tables.py create mode 100644 lib/freebies.db.bak diff --git a/lib/create_tables.py b/lib/create_tables.py new file mode 100644 index 000000000..80aaa0a14 --- /dev/null +++ b/lib/create_tables.py @@ -0,0 +1,13 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from models import Base + + +engine = create_engine("sqlite:///lib/freebies.db") +Session = sessionmaker(bind=engine) +session = Session() + + +Base.metadata.create_all(engine) + +print("Database and tables created (or already exist).") diff --git a/lib/debug.py b/lib/debug.py index 4f922eb69..3d70c7ae9 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 Base, Company, Dev, Freebie + + +engine = create_engine("sqlite:///lib/freebies.db") -from models import Company, Dev +Session = sessionmaker(bind=engine) +session = Session() -if __name__ == '__main__': - engine = create_engine('sqlite:///freebies.db') +if __name__ == "__main__": + print("Session loaded. Tables:", Base.metadata.tables.keys()) import ipdb; ipdb.set_trace() diff --git a/lib/freebies.db b/lib/freebies.db index 12beb1c963e832db481e7a7493e3029e691ac4dc..f17d60358b3c4668cf734477385f39fa0548a923 100644 GIT binary patch delta 550 zcmZozz}V2hI6<0~je&uIWuk(;FdKtjyeuz}$IQEyfxn2Kmv`;PMr&S^rdVcnaamc$ zR^F1tq@2{WqSVx+%+z8S&Eg#7>KNjx5aQ_M&n478)<{0Gc z;TWW&z{OdXm{Xdn;OQ6Q>h1~_NJ%Y=&rCrUNzTtLNX)AQicWsdCsPm7`zd(4MruIBH5Gzf-CToQ{hVEc6~JmVGE+417>BSp z9>N5AQ^5<_V1x=3!x5@MHgIVsGqH<{iZV88f0Fo-hw0=2PU;bCN9kYsYt&ri=uWj_Z| z`<{XS2mkxcf(DQIW!agS8AKf`6Z6;@nHhu~b21@HZZhzH;J*np?kvB$C=(llDkCFf ja7kuzc50DAKw@$>D-#nRBO8M>BPVBwZgECtQHclu*}|Q~ delta 454 zcmZo@U~E{xI6<0~m4ShQb)tg3C@X_ryeu#O4+a)KDF%LC{+)dFd{UbQ1(xxOC$q4N zi;6NfYL+A><)o&hmKB3A>tq%F00m}tad~;h##FFWa(-?>VqRuyF`U6Nc?y3{eWNBL zySTPCV-qJ>Sz=CVZc=7)d|7Hyab|uV8kfmA$kj2#RUyRD$;VXzO;SOFixa9XKCd)a zAvVYBMrq=B1=o6c^@XmZZifmX_p$`SED(i8n+OUS8ETnLke_{ZK6dxm#s%e_JQL?E;QkscHG8bIUW' + return f"" + class Dev(Base): __tablename__ = 'devs' - id = Column(Integer(), primary_key=True) - name= Column(String()) + id = Column(Integer, primary_key=True) + name = Column(String) + + freebies = relationship("Freebie", backref="dev") + + @property + def companies(self): + return list({freebie.company for freebie in self.freebies}) + + def received_one(self, item_name): + return any(f.item_name == item_name for f in self.freebies) + + def give_away(self, dev, freebie, session): + if freebie.dev == self: + freebie.dev = dev + session.commit() + return True + return False + + 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')) + + def print_details(self): + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}" def __repr__(self): - return f'' + return f"" diff --git a/lib/seed.py b/lib/seed.py index b16becbbb..41548a49a 100644 --- a/lib/seed.py +++ b/lib/seed.py @@ -1,3 +1,29 @@ #!/usr/bin/env python3 # Script goes here! +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from models import Base, Company, Dev + +engine = create_engine("sqlite:///lib/freebies.db") +Session = sessionmaker(bind=engine) +session = Session() + + +Base.metadata.create_all(engine) + + +google = Company(name="Google", founding_year=1998) +meta = Company(name="Meta", founding_year=2004) + +ali = Dev(name="Ali") +ayan = Dev(name="Ayan") + +session.add_all([google, meta, ali, ayan]) +session.commit() + + +google.give_freebie(session, ali, "T-shirt", 20) +meta.give_freebie(session, ayan, "Sticker Pack", 5) + +print("Seed data created.")