class Comment(db.Model): id = db.Column(db.Integer, nullable=False, primary_key=True) 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')) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) def __repr__(self): return f"Comment('{self.content}', '{self.date_posted}')"
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) tags = db.relationship('Tag', backref='post', cascade="all, delete", lazy='dynamic') upvotes = db.relationship('Upvote', backref='post', cascade="all, delete", lazy='dynamic') downvotes = db.relationship('Downvote', backref='post', cascade="all, delete", lazy='dynamic') comments = db.relationship('Comment', backref='post', cascade="all, delete", lazy='dynamic') resources = db.relationship('ResourceFile', backref='post', cascade="all, delete", lazy='dynamic') bookmarks = db.relationship('Bookmark', backref='post', cascade="all, delete", lazy='dynamic') def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')"
class ResourceFile(db.Model): id = db.Column(db.Integer, nullable=False, primary_key=True) filename = db.Column(db.String(50), nullable=False, unique=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
class Bookmark(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id'), primary_key=True)
class Tag(db.Model): tag = db.Column(db.String(50), nullable=False, primary_key=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id'), primary_key=True)