class deleted_patients(db.Model):
    username = db.Column(db.String(100), primary_key=True)
    email = db.Column(db.String(100), unique=True, nullable=False)
    name = db.Column(db.String(500), nullable=False)
    age = db.Column(db.Integer)
    blood_group = db.Column(db.String(15))
    contact_number = db.Column(db.Unicode(20))
    address = db.Column(db.Text)
    gender_user = db.Column(db.String(15))
    deleted_on = db.Column(db.DateTime, default=datetime.utcnow)
    joined_on = db.Column(db.DateTime)
    File = db.Column(db.LargeBinary, nullable=True, default=None)
class Patient(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100),
                         ForeignKey('user.username'),
                         index=True,
                         nullable=False)
    name = db.Column(db.String(500))
    age = db.Column(db.Integer)
    blood_group = db.Column(db.String(15))
    contact_number = db.Column(db.Unicode(20))
    address = db.Column(db.Text)
    gender_user = db.Column(db.String(15))
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    birthdate = db.Column(db.Date)
    File = db.Column(db.LargeBinary, nullable=True, default=None)
class past_user_role(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100), nullable=False)
    doctor_username = db.Column(db.String(100), nullable=True)
    name = db.Column(db.String(500))
    birthdate = db.Column(db.Date)
    age = db.Column(db.Integer)
    contact_number = db.Column(db.Unicode(20))
    address = db.Column(db.Text)
    gender_user = db.Column(db.String(15))
    work_timings = db.Column(db.Text)
    date_of_joining = db.Column(db.Date)
    end_date = db.Column(db.Date)
    role = db.Column(db.String(20), nullable=False)
    File = db.Column(db.LargeBinary, nullable=True, default=None)
class user_role(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100),
                         ForeignKey('user.username'),
                         index=True,
                         nullable=False)
    name = db.Column(db.String(500))
    role = db.Column(db.String(20), nullable=False)
    birthdate = db.Column(db.Date)
    age = db.Column(db.Integer)
    contact_number = db.Column(db.Unicode(20))
    address = db.Column(db.Text)
    gender = db.Column(db.String(15))
    work_timings = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    doctor_username = db.Column(db.String(100),
                                ForeignKey('user.username'),
                                nullable=True)
    date_of_joining = db.Column(db.Date)
    File = db.Column(db.LargeBinary, nullable=True, default=None)
class temporary_role_users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(100), unique=True, nullable=False)
    username = db.Column(db.String(100),
                         index=True,
                         nullable=False,
                         unique=True)
    name = db.Column(db.String(500))
    password = db.Column(db.String(100), nullable=False)
    birthdate = db.Column(db.Date)
    role = db.Column(db.String(20), nullable=False)
    age = db.Column(db.Integer)
    contact_number = db.Column(db.Unicode(20))
    address = db.Column(db.Text)
    gender = db.Column(db.String(15))
    work_timings = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    doctor_username = db.Column(db.String(100),
                                ForeignKey('user.username'),
                                nullable=True)
    File = db.Column(db.LargeBinary, nullable=True, default=None)

    def set_password(self, password):
        self.password = generate_password_hash(password)