learnhouse/apps/api/src/db/trail_steps.py
2024-02-04 20:27:56 +01:00

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