from typing import TYPE_CHECKING from sqlalchemy import ForeignKey from sqlalchemy.orm import Mapped, mapped_column, relationship from models.base import BaseModel from models.mixins import SoftDeleteMixin, CreatedAtMixin, IdMixin if TYPE_CHECKING: from models import Project, Status, Deal class Board(BaseModel, IdMixin, SoftDeleteMixin, CreatedAtMixin): __tablename__ = "boards" name: Mapped[str] = mapped_column(nullable=False) lexorank: Mapped[str] = mapped_column(nullable=False) project_id: Mapped[int] = mapped_column(ForeignKey("projects.id"), nullable=False) project: Mapped["Project"] = relationship(back_populates="boards") statuses: Mapped[list["Status"]] = relationship(back_populates="board") deals: Mapped[list["Deal"]] = relationship(back_populates="board")