class User(Model): # Basic details id = Column(db.Integer, primary_key=True) email = Column(db.String(255), unique=True) username = Column(db.String(15), unique=True) full_name = Column(db.String(50)) password_hash = Column(db.String(255)) # Statuses joined_date = Column(db.DateTime, default=datetime.utcnow) facts_created = relationship("Fact", backref="author", lazy=True) @property def password(self): raise AttributeError("Password: Write-Only field") @password.setter def password(self, password): self.password_hash = bcrypt.generate_password_hash(password).decode( "utf-8") def check_password(self, password): return bcrypt.check_password_hash(self.password_hash, password) def __repr__(self): return f"<User '{ self.username }'>"
class User(db.Model): user_id = db.Column(db.Integer, primary_key=True, nullable=False) user_name = db.Column(db.String(60), nullable=False) nick_name = db.Column(db.String(20), unique=True) user_email = db.Column(db.String(40), nullable=False) message_boxes = db.relationship('Box', secondary=boxes, lazy='subquery', backref=db.backref('members', lazy=True)) messages = db.relationship('Message', backref='member', lazy=True)
class Role(Model): """ Role Model for storing role related details """ __tablename__ = "role" id = Column(db.Integer, primary_key=True) name = Column(db.String(20), unique=True) description = Column(db.String(50)) def __repr__(self): return f"<{ self.name } - { self.description }>"
class Fact(Model): """ Fact model for storing fact related stuff *shrug* """ # Basic details id = Column(db.Integer, primary_key=True) public_id = Column(db.String(15)) author_id = Column(db.Integer, db.ForeignKey("user.id"), nullable=False) planet = Column(db.String(15)) # Fact content title = Column(db.String(50), nullable=True) content = Column(db.Text) created_at = Column(db.DateTime, default=datetime.utcnow) updated_at = Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f"<Fact '{self.public_id}'>"
class Box(db.Model): box_id = db.Column(db.Integer, primary_key=True, nullable=False) box_name = db.Column(db.String(100), nullable=False) messages = db.relationship('Message', backref='message_box', lazy=True)
class Message(db.Model): message_id = db.Column(db.Integer, primary_key=True, nullable=False) message_content = db.Column(db.String(255), nullable=False) created_on = db.Column(db.DateTime, server_default=db.func.now()) member_id = db.Column(db.Integer, db.ForeignKey('user.user_id')) box_id = db.Column(db.Integer, db.ForeignKey('box.box_id'))