| 11 | |
| 12 | |
| 13 | class TrailStep(SQLModel, table=True): |
| 14 | __table_args__ = ( |
| 15 | Index("ix_trailstep_trailrun_user", "trailrun_id", "user_id"), |
| 16 | ) |
| 17 | id: Optional[int] = Field(default=None, primary_key=True) |
| 18 | complete: bool |
| 19 | teacher_verified: bool |
| 20 | grade: str |
| 21 | data: dict = Field(default_factory=dict, sa_column=Column(JSON)) |
| 22 | # foreign keys |
| 23 | trailrun_id: int = Field( |
| 24 | sa_column=Column(Integer, ForeignKey("trailrun.id", ondelete="CASCADE"), index=True) |
| 25 | ) |
| 26 | trail_id: int = Field( |
| 27 | sa_column=Column(Integer, ForeignKey("trail.id", ondelete="CASCADE")) |
| 28 | ) |
| 29 | activity_id: int = Field( |
| 30 | sa_column=Column(Integer, ForeignKey("activity.id", ondelete="CASCADE")) |
| 31 | ) |
| 32 | course_id: int = Field( |
| 33 | sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE"), index=True) |
| 34 | ) |
| 35 | org_id: int = Field( |
| 36 | sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE")) |
| 37 | ) |
| 38 | user_id: int = Field( |
| 39 | sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE"), index=True) |
| 40 | ) |
| 41 | # timestamps |
| 42 | creation_date: str |
| 43 | update_date: str |
| 44 | |
| 45 | |
| 46 | # note : prepare assignments support |