from app import db

from flask_login import UserMixin

from werkzeug.security import (
    generate_password_hash,
    check_password_hash
)


class User(
    UserMixin,
    db.Model
):

    __tablename__ = "users"

    id = db.Column(
        db.Integer,
        primary_key=True
    )

    username = db.Column(
        db.String(100),
        unique=True,
        nullable=False
    )

    password = db.Column(
        db.String(300),
        nullable=False
    )

    role = db.Column(
        db.String(20),
        nullable=False
    )

    def set_password(
        self,
        password
    ):

        self.password = (
            generate_password_hash(
                password
            )
        )

    def check_password(
        self,
        password
    ):

        return (
            check_password_hash(
                self.password,
                password
            )
        )