mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from enum import Enum
|
|
from typing import Optional
|
|
from sqlmodel import Field, SQLModel
|
|
from sqlalchemy import ForeignKey, JSON, Column, Integer
|
|
|
|
|
|
class TrailStepTypeEnum(str, Enum):
|
|
STEP_TYPE_READABLE_ACTIVITY = "STEP_TYPE_READABLE_ACTIVITY"
|
|
STEP_TYPE_ASSIGNMENT_ACTIVITY = "STEP_TYPE_ASSIGNMENT_ACTIVITY"
|
|
STEP_TYPE_CUSTOM_ACTIVITY = "STEP_TYPE_CUSTOM_ACTIVITY"
|
|
|
|
|
|
class TrailStep(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
complete: bool
|
|
teacher_verified: bool
|
|
grade: str
|
|
data: dict = Field(default={}, sa_column=Column(JSON))
|
|
# foreign keys
|
|
trailrun_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("trailrun.id", ondelete="CASCADE"))
|
|
)
|
|
trail_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("trail.id", ondelete="CASCADE"))
|
|
)
|
|
activity_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("activity.id", ondelete="CASCADE"))
|
|
)
|
|
course_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE"))
|
|
)
|
|
org_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE"))
|
|
)
|
|
user_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("user.id", ondelete="CASCADE"))
|
|
)
|
|
# timestamps
|
|
creation_date: str
|
|
update_date: str
|
|
|
|
|
|
# note : prepare assignments support
|
|
# an assignment object will be linked to a trail step object in the future
|