from __future__ import absolute_import
from flask_sqlalchemy.query import Query as BaseQuery
from dostadmin import db
from dostadmin.mixins import TimestampMixin


class UserTypeQuery(BaseQuery):
    def get_user_type_id_by_name(self, name):
        user_type = self.filter(UserType.name == name).first()
        if user_type:
            return user_type.id

        return -1


class UserType(TimestampMixin, db.Model):
    __tablename__ = "usertype"
    query_class = UserTypeQuery

    class Type:
        PARENT = "parent"
        TEACHER = "teacher"
        SCHOOLLEADER = "schoolleader"

        CHOICES = [
            (PARENT, "Parent"),
            (TEACHER, "Teacher"),
            (SCHOOLLEADER, "School Leader"),
        ]

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=False)

    users = db.relationship(
        "User", backref="usertype", primaryjoin="User.user_type_id == UserType.id"
    )
