from typing import TYPE_CHECKING from sqlalchemy import String, Text from sqlalchemy.orm import Mapped, mapped_column, relationship from src.models.base import Base, UUIDMixin if TYPE_CHECKING: from src.models.question import Question class Category(Base, UUIDMixin): """Question category (e.g., Arrays, Strings, Trees).""" __tablename__ = "categories" name: Mapped[str] = mapped_column(String(100), unique=True, nullable=False) slug: Mapped[str] = mapped_column(String(100), unique=True, nullable=False) description: Mapped[str | None] = mapped_column(Text, nullable=True) # Relationships questions: Mapped[list["Question"]] = relationship( secondary="question_categories", back_populates="categories", )