from datetime import datetime from typing import TYPE_CHECKING from sqlalchemy import ForeignKey from sqlalchemy.orm import Mapped, mapped_column, relationship from models import BaseModel if TYPE_CHECKING: from models import Project, DealStatus, Deal class Board(BaseModel): __tablename__ = "boards" id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(nullable=False) created_at: Mapped[datetime] = mapped_column(nullable=False) is_deleted: Mapped[bool] = mapped_column(default=False) ordinal_number: Mapped[int] = mapped_column(nullable=False) project_id: Mapped[int] = mapped_column(ForeignKey('projects.id'), nullable=False) project: Mapped["Project"] = relationship( "Project", back_populates="boards", lazy="selectin", ) deal_statuses: Mapped[list["DealStatus"]] = relationship("DealStatus", back_populates="board", lazy="selectin", cascade="all,delete") deals: Mapped[list["Deal"]] = relationship("Deal", uselist=True, back_populates="board", lazy="selectin")