class Author(db.Model): id = db.Column(db.Integer, primary_key=True) books = db.relationship("Book", backref="author", lazy=True) username = db.Column(db.String(20), unique=True, nullable=False) surname = db.Column(db.String(20), unique=True, nullable=False) def __repr__(self): return f"Author('{self.name} {self.surname}')"
class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default="default.jpg") password = db.Column(db.String(60), nullable=False) posts = db.relationship("Post", backref="author", lazy=True) def __repr__(self): return f"User('{self.username}', '{self.email}', '{self.image_file}')"
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) date_edited = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) # TODO: edition history? content = db.Column(db.Text, nullable=False) created_by = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) modified_by = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) modified_by = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) tags = db.relationship("Tag", backref="name", lazy=True) # private = db.Column(db.Boolean, db.ForeignKey("user.id"), nullable=False) def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')"
class Tag(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) notes = db.relationship("Note", backref="title", lazy=True) def __repr__(self): return f"Tag('{self.name}')"
class Book(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(), nullable=False) author_id = db.Column(db.Integer, db.ForeignKey("author.id"), nullable=False) def __repr__(self): return f"Book('{self.title} {self.author_id}')"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')"