class Direct(db.Model): id = db.Column(db.Integer, primary_key =True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id')) content = db.Column(db.Text, nullable=False) date_posted = db.Column(db.DateTime, default=datetime.now) def __repr__(self): return f'Direct -> "{self.content}" '
class Comment(db.Model): id = db.Column(db.Integer, primary_key = True) date_commented = db.Column(db.DateTime, nullable=False, default=datetime.now) content = db.Column(db.Text, nullable=False) post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f'User("{self.id}", "{self.content}")'
class Post(db.Model): id = db.Column(db.Integer, primary_key = True) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.now) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) likes = db.relationship('PostLike', backref='post', lazy='dynamic') dislikes = db.relationship('PostDislike', backref='post', lazy='dynamic') comments = db.relationship('Comment', backref='author', lazy=True) def __repr__(self): return f'User("{self.id}", "{self.date_posted}")'
class PostDislike(db.Model): __tablename__ = 'post_dislike' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
from Qtalk import db, login_manager, app from .config import app_secret_key from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from datetime import datetime from flask_login import UserMixin from sqlalchemy import and_ @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) ) class User(db.Model, UserMixin): 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.png') password = db.Column(db.String(60), nullable=False) is_super_user = db.Column(db.String(5), default='false') birthday = db.Column(db.DateTime, nullable=True) status = db.Column(db.String(300), nullable=True) last_seen = db.Column(db.DateTime, default=datetime.now) date_register = db.Column(db.DateTime, nullable=False, default=datetime.now) last_time_explore = db.Column(db.DateTime, default=datetime.now) last_time_home = db.Column(db.DateTime, default=datetime.now) posts = db.relationship('Post', backref='author', lazy=True) comments = db.relationship('Comment', backref='sender', lazy=True)