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


class LanguageQuery(BaseQuery):
    def find_language_id_with_name(self, ip_name="hindi"):
        return self.filter(Language.name == replace_chars(ip_name)).first().id

    def get_all_languages(self):
        return self.all()


class Language(TimestampMixin, db.Model):
    __tablename__ = "language"
    query_class = LanguageQuery

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

    experiences = db.relationship(
        "Experience",
        backref="language",
        primaryjoin="Language.id == Experience.language_id",
    )
    content_version = db.relationship(
        "ContentVersion",
        backref="language",
        primaryjoin="Language.id == ContentVersion.language_id",
    )

    def __repr__(self):
        return "Language " + self.name + " " + str(self.id)
