from typing import TYPE_CHECKING, List, Optional from sqlmodel import Field, Relationship, SQLModel if TYPE_CHECKING: from app.models.mail_template import MailTemplate from app.models.organization import Organization from app.models.participant import Participant from app.models.purchase_round import PurchaseRound class RouteBase(SQLModel): name: str meeting_info: Optional[str] = Field(default=None) contact_person: Optional[str] = Field(default=None) contact_phone: Optional[str] = Field(default=None) sender_name: Optional[str] = Field(default=None) sender_email: Optional[str] = Field(default=None) public_domain: Optional[str] = Field(default=None, unique=True, index=True) class Route(RouteBase, table=True): __tablename__ = "route" id: Optional[int] = Field(default=None, primary_key=True) organization_id: int = Field(foreign_key="organization.id", ondelete="RESTRICT") organization: "Organization" = Relationship(back_populates="routes") participants: List["Participant"] = Relationship( back_populates="route", sa_relationship_kwargs={"cascade": "all, delete-orphan"} ) purchase_rounds: List["PurchaseRound"] = Relationship( back_populates="route", sa_relationship_kwargs={"cascade": "all, delete-orphan"} ) mail_templates: List["MailTemplate"] = Relationship( back_populates="route", sa_relationship_kwargs={"cascade": "all, delete-orphan"} )