class Book(db.Model): __tablename__ = 'books' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), nullable=False) isbn = db.Column(db.BigInteger, nullable=False, unique=True) number_of_pages = db.Column(db.Integer, nullable=False) description = db.Column(db.Text) author_id = db.Column(db.Integer, db.ForeignKey('authors.id'), nullable=False) author = db.relationship('Author', back_populates='books') def __repr__(self): return f'{self.title} - {self.author.first_name} {self.author.last_name}' @staticmethod def additional_validation(param: str, value: str) -> str: return value
class Author(db.Model): __tablename__ = 'authors' id = db.Column(db.Integer, primary_key=True) first_name = db.Column(db.String(50), nullable=False) last_name = db.Column(db.String(50), nullable=False) birth_date = db.Column(db.Date, nullable=False) books = db.relationship('Book', back_populates='author', cascade='all, delete-orphan') def __repr__(self): return f'<{self.__class__.__name__}>: {self.first_name} {self.last_name}' @staticmethod def additional_validation(param: str, value: str) -> date: if param == 'birth_date': try: value = datetime.strptime(value, '%d-%m-%Y').date() except ValueError: value = None return value