From 582c46e3663e188d640a439a92eaf677ad5e1d65 Mon Sep 17 00:00:00 2001 From: michelle Date: Tue, 3 Jun 2025 20:59:59 +0300 Subject: [PATCH] done --- .../5f72c58bf48c_create_companies_devs.py | 8 +++ lib/models.py | 51 ++++++++++++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/lib/migrations/versions/5f72c58bf48c_create_companies_devs.py b/lib/migrations/versions/5f72c58bf48c_create_companies_devs.py index c191bb2f9..f25934210 100644 --- a/lib/migrations/versions/5f72c58bf48c_create_companies_devs.py +++ b/lib/migrations/versions/5f72c58bf48c_create_companies_devs.py @@ -29,6 +29,13 @@ def upgrade() -> None: sa.Column('name', sa.String(), nullable=True), sa.PrimaryKeyConstraint('id') ) + op.create_table('freebies', + # sa.Column('id', sa.Integer(), primary_key=True), + sa.Column('item_name', sa.String(),nullable=True), + sa.Column('value', sa.Integer(),nullable=False), + sa.Column('company_id', sa.Integer(), sa.ForeignKey('companies.id'),nullable=False), + sa.Column('dev_id', sa.Integer(), sa.ForeignKey('devs.id'),nullable=False) + ) # ### end Alembic commands ### @@ -36,4 +43,5 @@ def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.drop_table('devs') op.drop_table('companies') + op.drop_table('freebies') # ### end Alembic commands ### diff --git a/lib/models.py b/lib/models.py index 2681bee5a..02d1db394 100644 --- a/lib/models.py +++ b/lib/models.py @@ -15,9 +15,16 @@ class Company(Base): id = Column(Integer(), primary_key=True) name = Column(String()) founding_year = Column(Integer()) + + devs = relationship('Dev', secondary='freebies', backref='companies') def __repr__(self): return f'' + @classmethod + def oldest_company(cls): + return session.query(cls).order_by(cls.founding_year).first() + + class Dev(Base): __tablename__ = 'devs' @@ -25,5 +32,45 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) - def __repr__(self): - return f'' + def received_one(self, item_name): + return any(freebie.item_name == item_name for freebie in self.freebies) + + def give_away(self, dev, freebie): + if freebie.dev == self: + freebie.dev = dev + session.commit() + + +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', backref='freebies') + company = relationship('Company', backref='freebies') + + + + + def print_details(self): + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}" + + # def give_freebie(self, dev, item_name, value): + # freebie = Freebie( + # item_name=item_name, + # value=value, + # company_id=self.id, + # dev_id=dev.id + # ) + # session.add(freebie) + # session.commit() + + + + +