from typing import TYPE_CHECKING, List, Optional from sqlmodel import Field, Relationship, SQLModel if TYPE_CHECKING: from app.models.order import Order from app.models.route import Route class ParticipantBase(SQLModel): name: str email: str phone: Optional[str] = Field(default=None) is_active: bool = Field(default=True) class Participant(ParticipantBase, table=True): __tablename__ = "participant" id: Optional[int] = Field(default=None, primary_key=True) route_id: int = Field(foreign_key="route.id", ondelete="CASCADE") route: "Route" = Relationship(back_populates="participants") orders: List["Order"] = Relationship( back_populates="participant", sa_relationship_kwargs={"cascade": "all, delete-orphan"} )