TRM-coding | d1cbf67 | 2025-06-18 15:15:08 +0800 | [diff] [blame^] | 1 | # models/comment.py |
| 2 | from extensions import db |
| 3 | from datetime import datetime |
| 4 | |
| 5 | class Comment(db.Model): |
| 6 | __tablename__ = 'comments' |
| 7 | |
| 8 | id = db.Column(db.Integer, primary_key=True) |
| 9 | post_id = db.Column(db.Integer, db.ForeignKey('posts.id', ondelete='CASCADE'), nullable=False) |
| 10 | user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), nullable=False) |
| 11 | parent_id = db.Column(db.Integer, db.ForeignKey('comments.id', ondelete='CASCADE')) |
| 12 | content = db.Column(db.Text, nullable=False) |
| 13 | status = db.Column(db.Enum('active', 'deleted'), default='active', nullable=False) |
| 14 | created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) |
| 15 | updated_at = db.Column(db.DateTime, default=datetime.utcnow, |
| 16 | onupdate=datetime.utcnow, nullable=False) |
| 17 | |
| 18 | # self-referential replies |
| 19 | replies = db.relationship( |
| 20 | 'Comment', |
| 21 | backref=db.backref('parent', remote_side=[id]), |
| 22 | lazy='dynamic', |
| 23 | cascade='all, delete-orphan' |
| 24 | ) |