from FlaskBlog import db,login_manager
from datetime import datetime


@login_manager.user_loader
def load_user(user_id):
  return User.query.get(int(user_id))


class User(db.Model):
  id = db.Column(db.Integer,primary_key=True)
  username = db.Column(db.String(20),unique=True,nullable=False)
  email = db.Column(db.String(20),unique=True,nullable=False)
  image_file = db.Column(db.String(20),unique=False,nullable=False,default='default.jpg')
  password = db.Column(db.String(60),nullable=False)
  posts = db.relationship('Post',backref='author',lazy=True)

  def __repr__(self):
    return f"User('{self.username}','{self.email}','{self.image_file}')"


class Post(db.Model):
  id = db.Column(db.Integer,primary_key=True)
  title = db.Column(db.String(100),nullable=False)
  date_posted = db.Column(db.DateTime,nullable=False, default=datetime.utcnow)
  content = db.Column(db.Text, nullable=False)
  user_id = db.Column(db.Integer,db.ForeignKey(User.id),nullable=False)

  def __repr__(self):
    return f"User('{self.title}','{self.date_posted}')"

