| # models/comment.py |
| from extensions import db |
| from datetime import datetime |
| |
| class Comment(db.Model): |
| __tablename__ = 'comments' |
| |
| id = db.Column(db.Integer, primary_key=True) |
| post_id = db.Column(db.Integer, db.ForeignKey('posts.id', ondelete='CASCADE'), nullable=False) |
| user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), nullable=False) |
| parent_id = db.Column(db.Integer, db.ForeignKey('comments.id', ondelete='CASCADE')) |
| content = db.Column(db.Text, nullable=False) |
| status = db.Column(db.Enum('active', 'deleted'), default='active', nullable=False) |
| created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) |
| updated_at = db.Column(db.DateTime, default=datetime.utcnow, |
| onupdate=datetime.utcnow, nullable=False) |
| |
| # self-referential replies |
| replies = db.relationship( |
| 'Comment', |
| backref=db.backref('parent', remote_side=[id]), |
| lazy='dynamic', |
| cascade='all, delete-orphan' |
| ) |