diff --git a/lib/migrations/company.py b/lib/migrations/company.py new file mode 100644 index 000000000..f3a0188b0 --- /dev/null +++ b/lib/migrations/company.py @@ -0,0 +1,21 @@ +from sqlalchemy import Column, Integer, String +from sqlalchemy.orm import relationship +from .base import Base + +class Company(Base): + __tablename__ = 'companies' + + id = Column(Integer, primary_key=True) + name = Column(String) + founding_year = Column(Integer) + + devs = relationship("Dev", secondary='freebies', backref="companies") + freebies = relationship("Freebie", backref="company") + + def give_freebie(self, dev, item_name, value): + new_freebie = Freebie(dev=dev, company=self, item_name=item_name, value=value) + return new_freebie + + @classmethod + def oldest_company(cls): + return cls.query.order_by(cls.founding_year).first() diff --git a/lib/migrations/dev.py b/lib/migrations/dev.py new file mode 100644 index 000000000..7ff8035f0 --- /dev/null +++ b/lib/migrations/dev.py @@ -0,0 +1,23 @@ +from sqlalchemy import Column, Integer, String +from sqlalchemy.orm import relationship +from .base import Base + +class Dev(Base): + __tablename__ = 'devs' + + id = Column(Integer, primary_key=True) + name = Column(String) + + freebies = relationship("Freebie", backref="dev") + + def received_one(self, item_name): + for freebie in self.freebies: + if freebie.item_name == item_name: + return True + return False + + def give_away(self, other_dev, freebie): + if freebie in self.freebies: + freebie.dev = other_dev + + diff --git a/lib/migrations/freebie.py b/lib/migrations/freebie.py new file mode 100644 index 000000000..6114a07c1 --- /dev/null +++ b/lib/migrations/freebie.py @@ -0,0 +1,18 @@ +from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy.orm import relationship +from .base import Base + +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}"