diff --git a/models.py b/models.py index 4f3b78e..ae14f19 100644 --- a/models.py +++ b/models.py @@ -305,4 +305,41 @@ class Document(db.Model): file_size = db.Column(db.Integer, nullable=True) def __repr__(self): - return f'' \ No newline at end of file + return f'' + +# Forum-Kategorie-Modell - entspricht den Hauptknotenpunkten der Mindmap +class ForumCategory(db.Model): + id = db.Column(db.Integer, primary_key=True) + node_id = db.Column(db.Integer, db.ForeignKey('mind_map_node.id'), nullable=False) + title = db.Column(db.String(200), nullable=False) + description = db.Column(db.Text) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + is_active = db.Column(db.Boolean, default=True) + + # Beziehungen + node = db.relationship('MindMapNode', backref='forum_category') + posts = db.relationship('ForumPost', backref='category', lazy=True, cascade="all, delete-orphan") + + def __repr__(self): + return f'' + +# Forum-Beitrag-Modell +class ForumPost(db.Model): + id = db.Column(db.Integer, primary_key=True) + title = db.Column(db.String(200), nullable=False) + content = db.Column(db.Text, nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) + category_id = db.Column(db.Integer, db.ForeignKey('forum_category.id'), nullable=False) + parent_id = db.Column(db.Integer, db.ForeignKey('forum_post.id'), nullable=True) + is_pinned = db.Column(db.Boolean, default=False) + is_locked = db.Column(db.Boolean, default=False) + view_count = db.Column(db.Integer, default=0) + + # Beziehungen + author = db.relationship('User', backref='forum_posts') + replies = db.relationship('ForumPost', backref=db.backref('parent', remote_side=[id]), lazy=True) + + def __repr__(self): + return f'' \ No newline at end of file