from sqlalchemy import ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from ttfrog.db.base import BaseObject

__all__ = [
    "Skill",
]


class Skill(BaseObject):
    __tablename__ = "skill"
    id: Mapped[int] = mapped_column(init=False, primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(String(collation="NOCASE"), nullable=False, unique=True)
    base_id: Mapped[int] = mapped_column(ForeignKey("skill.id"), nullable=True, default=None)

    parent: Mapped["Skill"] = relationship(init=False, remote_side=id, uselist=False)
